XACT ABORTを使って途中でエラーになったトランザクションをロールバックする
一つのsqlファイルの中に複数INSERT文を書きまとめて実行する時、途中で一意制約違反エラーになったらどうするか 初期状態
code:cmd.sql
SELECT name, address, tell FROM SAMPLE_TABLE;
table:result.csv
name address tell
Go Japan 070-7777-7777
INSERT
code:cmd.sql
BEGIN TRANSACTION;
INSERT INTO SAMPLE_TABLE VALUES('Go','Japan','090-9999-9999');
INSERT INTO SAMPLE_TABLE VALUES('Go','Japan','080-8888-8888');
INSERT INTO SAMPLE_TABLE VALUES('Go','Japan','070-7777-7777');--これが重複する
INSERT INTO SAMPLE_TABLE VALUES('Go','Japan','060-6666-6666');
COMMIT;
エラーになる直前まではINSERTされてしまう
実行失敗している時点で、だいたい焦っている
トランザクションが入れ子になっていたりすると
デメリットは?
調べた感じ、ロールバックできそうな方法は2つ