2017-12-26 18 views
1

トランザクションを使用しない場合、レコードが半分に変更されている可能性があります(要求されたフィールドはすべて変更されているわけではなく、BLOBの一部のみが変更されているわけではありません)。 SQLiteやMySQLのような別のデータベースに依存していますか?RDBMSは行レベルの原子性を保証しますか?

+1

トランザクションは完全に完了することが保証されるか、またはデッドロックのようなものを除いて、失敗してロールバックされます。あなたはこの質問に文脈を与えることができますか? –

+0

これは[ACID準拠](https://en.wikipedia.org/wiki/ACID)と関連しています。 InnoDBとSQLiteはそれを行うべきです。 MyISAMは本当に壊れやすいですが、*おそらく*ですが、破損の問題が発生する可能性はありません。 – tadman

+0

@TimBiegeleisenしかし、私の質問は「トランザクションを使用しないとき」です。 1つのSQL文がトランザクションではないようにDBを構成できると思います。 –

答えて

1

明示的なトランザクションを使用していない、SQLiteのとMySQLの両方が自動コミットモードを使用し、すなわち、それらはすべてのSQL文の周りに暗黙的なトランザクションをラップします:
SQLite transactions
MySQL transactions

あなたとトランザクション分離を減らしたとしても"コミットされていない読み取り"、データベースは部分的に更新された値を読み取ることを許可しません。

関連する問題