DBLink远程更新¶
神通数据库可以在DML语句中更新DBLink远端表。对DBLink远端表的更新方式和对本地表的更新方式基本相同。DML语句的使用方式见 INSERT, UPDATE 和 DELETE。
注解
由于DBLink远端表是一种特殊的表,DML语句中的部分功能对其不适用。这里会详细叙述DBLink远程更新与对本地表的普通更新之间的区别。
- DBLink远程更新不保证远端数据库和本地数据库事务的一致性。
- 由于不需要本地定义即可引用DBLink远端表,因此DBLink远程更新时,本地不知道DBLink远端表的具体类型,无论远端数据库上它是表、分区表、视图或者物化视图等类型,在本地它只会被视为普通表。本地也不会感知到远端数据库上的索引、约束、触发器,这些只会在远端数据库上生效。
- DBLink远程更新时,不允许在任何地方引用DBLink远端表的任何特殊列。比如
delete from td1@dbl1 returning rowid;
update td1@dbl1 set column = 'value' where rowid = 1;
这样的语句是不被允许的。
DBLink远程更新不支持对LOB对象的追加写和修改,只支持用新值替换旧值。
当数据库参数ENABLE_DBLINK_DIRECT_MODIFY(session级参数,默认为TRUE)为TRUE,且DBLink远程更新的语句符合一定条件时,会将该语句完整地转发到远端数据库执行,此种执行模式为DBLink直接更新。
- DBLink直接更新的效率比普通更新更高。可以使用explain命令对DBLink远程更新语句进行解析,如果使用了REMOTE DBLINK Modify Scan,则为DBLink直接更新。