iakioの日記 RSSフィード

2008-12-02

MySQLとPostgreSQLのトランザクション

| 00:39 | MySQLとPostgreSQLのトランザクション - iakioの日記 を含むブックマーク はてなブックマーク - MySQLとPostgreSQLのトランザクション - iakioの日記

エラーの後にロールバックしなければいけない理由 - iakioの日記 - postgresqlグループ

PostgreSQLでは、トランザクションブロック内でエラーが発生すると以降のSQLはトランザクションを終了するまで実行できませんが、MySQLでは実行できます。ちょうどpsqlの\set ON_ERROR_ROLLBACK相当の動作をするようです。以下MySQL5.0.67の実行例です。

mysql> create table t1 (i int) type=innodb;
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> begin;
Query OK, 0 rows affected (0.00 sec)

mysql> insert into t1 values(1);
Query OK, 1 row affected (0.00 sec)

mysql> xxx;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'xxx' at line 1
mysql> insert into t1 values(2);
Query OK, 1 row affected (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from t1;
+------+
| i    |
+------+
|    1 |
|    2 |
+------+
2 rows in set (0.00 sec)
トラックバック - http://postgresql.g.hatena.ne.jp/iakio/20081202