タグ

rdbmsに関するtakohakaのブックマーク (2)

  • PHPとMysqlのコネクションについて調べてみた - Qiita

    トランザクションがコネクション切断時とかに、どういう挙動を示すか?調べてみました。 PHPMySQLのトランザクション関連の仕様ざっくりと デフォルトでは、すべてのSQLがトランザクションを使用し、オートコミットする。(updateしたら即反映) 明示的に、beginTransactionした場合、そのコネクション上で行われた更新は、commit or rollbackメソッド実行時に一括で反映される。 また、beginTransaction中に接続が切断された場合、rollbackする。 http://dev.mysql.com/doc/refman/5.6/ja/innodb-implicit-commit.html 他のRDBMSだと、コネクション切断時はデフォルトcommitだったりするときもあるので、挙動は確認したほうが良いと思います。 暗黙的コミットにも気をつける 13.3.

    PHPとMysqlのコネクションについて調べてみた - Qiita
  • DBの自動連番がロールバックしても戻らない理由 - C Sharpens you up

    DBの主キーカラムに自動連番(MySQLならAUTO_INCREMENT、SQL ServerならIDENTITY、OracleやPostgreSQLならシーケンス)を設定していると、基的には連続した数字が付番されていくのですが、行削除もしていないのに抜け番が発生する場合があります。 INSERTが制約にひっかかって失敗した トランザクションをロールバックした などの場合です。 特にトランザクションのロールバックは、DB全体の変更をなかったことにするはずなのに連番だけは進んだまま戻らないということで、知らないと違和感があるものです。 連番が戻らない理由 PostgreSQLのドキュメントがこう説明しています。 同一のシーケンスから数値を取得する同時実行トランザクション同士のブロックを防止するため、nextval演算は決してロールバックされません。 http://www.postgresq

    DBの自動連番がロールバックしても戻らない理由 - C Sharpens you up
  • 1