gotohayato.com

moon indicating dark mode
sun indicating light mode

Drupal 7 で DB トランザクションを明示的にコミットする方法

2015/06/07Drupal 7

Drupal 7 で DB トランザクションを明示的にコミットする方法について。

Drupal では使用している DB がトランザクションをサポートしている場合は db_transaction() 関数でトランザクションを開始することができます。そして、ロールバックや例外などが発生しないかぎり一連の処理が終了して関数のスコープを抜けるときに自動的にトランザクションがコミットされます。

この自動コミットの仕組みに任せるのではなく、意図的に所定の場所でコミットしたい場合には次のようにすると OK です。 unset() の後に DB 関係の例外が発生しても unset() までの部分はコミット済みとなります。

$transaction = db_transaction();
// DB 変更処理
// トランザクションを明示的にコミット
unset($transaction);
throw new TransactionException();

関連記事


後藤隼人
個人事業でウェブ開発やマーケティングをしています。
GitHub