Drupal 7 で DB トランザクションを明示的にコミットする方法
Drupal 7 で DB トランザクションを明示的にコミットする方法について。
Drupal では使用している DB がトランザクションをサポートしている場合は db_transaction()
関数でトランザクションを開始することができます。そして、ロールバックや例外などが発生しないかぎり一連の処理が終了して関数のスコープを抜けるときに自動的にトランザクションがコミットされます。
この自動コミットの仕組みに任せるのではなく、意図的に所定の場所でコミットしたい場合には次のようにすると OK です。
unset()
の後に DB 関係の例外が発生しても unset()
までの部分はコミット済みとなります。
$transaction = db_transaction();
// DB 変更処理
// トランザクションを明示的にコミット
unset($transaction);
throw new TransactionException();