Teradata Database 系统会在执行每个表事务期间对表设置锁定。例如,如果正在对源表执行某个事务,则无法运行读取操作,直到前一个事务完成为止。但是,通过覆盖访问锁定功能,您可以覆盖缺省锁定,然后可在执行事务期间从源表中读取数据。此功能(也称为脏读)存在一定风险,即,可能会将源表中尚未提交的数据复制到目标表:
使用此功能时,请务必小心。
此功能为可选功能,并且只能使用 XML 来指定,而不能使用命令行界面。在对象列表 XML 文件中,可以通过添加设置为 true 的 override_lock_access 元素来覆盖缺省锁定。此功能以表为单位执行,因此,请在可执行覆盖的特定表下指定 override_lock_access 元素。
以下示例显示了 override_lock_access 元素的正确位置。
<database selection="unselected"> <name>srcDatabase</name> <table selection="included"> <name>srcTable</name> <validate_row_count>all</validate_row_count> <override_lock_access>true</override_lock_access> <compare_ddl>true</compare_ddl> </table> </database>
override_lock_access 元素的缺省值为 false。
只有 Teradata PT API、T2T 和 JDBC 实用程序支持此功能。不能使用 Teradata DSA。