ユーザーの変更履歴を追跡したいので、ユーザーがプロファイルを変更するたびに、古いデータを取得して履歴に保存し、新しいデータで更新する必要があります。
a select
を使用して古いデータを取得し、insert
toを履歴に、最後にを使用してデータupdate
を変更できます。
ロックなどを使用するようなストアドプロシージャ、トリガーなどを使用せずに、これらすべてをmysqlの単一のクエリで使用できます。
1
@savaranan:この質問は、トランザクションを使用してデータベースのACIDプロパティを最大限に活用することをDBAおよび開発者に強く思い出させるため、+ 1に値します。
—
RolandoMySQLDBA
@savaranan:あらゆる意図と目的のために、ジャックはそこにあるもっともらしい答えだけを提供しました。実際、Jack Douglasは追加のステップを実行し、SELECT ... FOR UPDATEを実行してMVCC保護を追加するために、id = 10のすべての行に断続的なロックを強制しました。彼の答えはジャックと私がずっと言ってきたポイントをさらに強調します:UPDATEとINSERTは単一のクエリになることはできず、決して単一のクエリになることはできません。
—
RolandoMySQLDBA 2011