Mac De Oracle Heterogeneous! #13 Tweet
Generic Connectivityを利用し、異機種データベースのデータを更新するリモートトランザクションの挙動を確認する。
(Oracle Generic Connectivityではトランザクションに関する制限があり分散トランザクションは行えない。リモートトランザクションとローカルトランザクションだけが行えるということになる。)
PowerBook G4 MacOSX Tiger 10.4.3に構築したMySQL4.0.25のemp表は、エンジンにMyISAMを利用している。MyISAMは非トランザクションセーフである。つまり、トランザクションという概念が存在しない。commit文、rollback文がその意味をなさないのである。したがって、INSERT文、UPDATE文、DELETE文を発行すると即座に反映され、rollbackすることはできない。MySQLをリモートデータベースにしている場合にはアクセスする表がトランザクションセーフなエンジンを利用しているかを事前に確認しておいたほうがよいだろう。
CORYDORAS>
CORYDORAS> insert into emp_mysql4025_mac@oracle10g_win values(4,'can''t rollback');
1行が作成されました。
経過: 00:00:00.68
CORYDORAS> select * from emp_mysql4025_mac@oracle10g_win;
empno ename
---------- ------------------------------
1 おらおら
2 ほげ
3 化けないよねー〜
4 can't rollback
経過: 00:00:00.03
CORYDORAS> rollback;
ロールバックが完了しました。
経過: 00:00:00.05
CORYDORAS> select * from emp_mysql4025_mac@oracle10g_win;
empno ename
---------- ------------------------------
1 おらおら
2 ほげ
3 化けないよねー〜
4 can't rollback
経過: 00:00:00.05
CORYDORAS>
さて、同じデータベースにInnoDBをエンジンとして作成した表はトランザクションセーフなのでrollbackすることができる。
CORYDORAS>
CORYDORAS> insert into inno_emp_mysql4025_mac@oracle10g_win values(5,'rollback test');
1行が作成されました。
経過: 00:00:00.03
CORYDORAS> select * from inno_emp_mysql4025_mac@oracle10g_win;
empno ename
---------- ------------------------------
1 おらおら
2 ほげ
3 化けないよねー〜
4 -ー−〜˜
5 rollback test
経過: 00:00:00.43
CORYDORAS> rollback;
ロールバックが完了しました。
経過: 00:00:00.15
CORYDORAS> select * from inno_emp_mysql4025_mac@oracle10g_win;
empno ename
---------- ------------------------------
1 おらおら
2 ほげ
3 化けないよねー〜
4 -ー−〜˜
経過: 00:00:00.06
CORYDORAS>
PostgreSQLもトランザクションセーフなのでrollbackすることができる。
CORYDORAS>
CORYDORAS> insert into emp_postgresql749_mac@oracle10g_win values(5,'rollback test');
1行が作成されました。
経過: 00:00:00.03
CORYDORAS> select * from emp_postgresql749_mac@oracle10g_win;
empno ename
---------- ------------------------------
1 ほげほげ
2 ほげ
3 化けないよね〜ー
4 -ー−〜˜
5 rollback test
経過: 00:00:00.03
CORYDORAS> rollback;
ロールバックが完了しました。
経過: 00:00:00.01
CORYDORAS> select * from emp_postgresql749_mac@oracle10g_win;
empno ename
---------- ------------------------------
1 ほげほげ
2 ほげ
3 化けないよね〜ー
4 -ー−〜˜
経過: 00:00:00.06
CORYDORAS>
次回は分散トランザクションを行おうとするとどのようなエラーが返されるか確認してみることにする。
| 固定リンク | 0
コメント