回答編集履歴
1
2相コミットはDDL文に対しても可能な旨、コメントを追記しました
answer
CHANGED
@@ -5,6 +5,9 @@
|
|
5
5
|
やり方は以下の通りです。
|
6
6
|
(1) beginメソッドによってトランザクションを開始する
|
7
7
|
(2) insert,update,delete等でデータベースに対する更新を実行する
|
8
|
+
[2015/10/21 17:32追記]
|
9
|
+
または、alter等でテーブル定義の更新を実行する
|
10
|
+
※PostgreSQLはalter等のDDL文にもトランザクションが利用できます
|
8
11
|
(3) prepare transactionコマンドによって2相コミットを開始する
|
9
12
|
例)prepare transaction 'transaction_id_00000001';
|
10
13
|
(4) 対象となるすべてのDBに対して(1)-(3)を実行する
|
@@ -24,6 +27,9 @@
|
|
24
27
|
begin;
|
25
28
|
insert into employee values (1, 'ariaki', true);
|
26
29
|
insert into employee values (2, 'foobar', true);
|
30
|
+
-- [2015/10/21 17:32追記]
|
31
|
+
-- トランザクション内で以下のようにDDL文が利用できます
|
32
|
+
alter table employee add column joined date not null;
|
27
33
|
prepare transaction 'tran20151021164600';
|
28
34
|
commit prepared 'tran20151021164600';
|
29
35
|
|