技术开发 频道

使用数据库链和序列时应注意的几点

    下面,考虑分布式事务——以INSERT INTO SELECT为例。

    由于INSERT的表可以是本地表,也可以是远端表,对于每种情况,对应的子查询语句都可能包含上面四种情况,下面就一一进行分析。

    一、插入本地表

    1.从本地表中读取数据,并引用本地序列

SQL> insert into test_on_test4 select seq_on_test4.nextval from test_on_test4; 已创建 1 行。 SQL> rollback; 回退已完成。

    2.从本地表中读取数据,但访问远端序列

SQL> insert into test_on_test4 select seq_on_yangtk.nextval@yangtk from test_on_test4; 已创建 1 行。 SQL> rollback; 回退已完成。

    3.读取远端数据表中数据,同时访问远端序列。

SQL> insert into test_on_test4 select seq_on_yangtk.nextval@yangtk from test_on_yangtk@yangtk; 已创建 1 行。 SQL> rollback; 回退已完成。

    4.读取远端数据表中数据,但是访问本地序列。

SQL> insert into test_on_test4 select seq_on_test4.nextval from test_on_yangtk@yangtk; 已创建 1 行。 SQL> rollback; 回退已完成。

    经测试,插入本地表的四种情况,没有出错。

0
相关文章