INSERT INTO … ON DUPLICATE KEY UPDATE
このように機能します:
- 通常どおり行を挿入しようとします
- いずれかの列で制約違反が発生すると、
UPDATE
が実行されます。 代わりに、INSERT
が使用する既存の行のステートメント ステートメントが衝突しました
これは単に、UPDATE
ステートメントだけで成功し、そのON DUPLICATE KEY UPDATE
同等のものも動作します。つまり、明らかにUPDATE
の制約に違反することはできません。 ステートメントのいずれか、またはすべてが失敗します(たとえば、UNIQUE
に値を設定しようとしています 別の行にすでに存在する列)。
同じ列に同じ値を再度設定した場合、それは基本的に何もしません。列の値は変更されないため、エラーが発生することもありません(本当にファンキーなBEFORE UPDATE
がないと仮定します。 誤動作する可能性のあるトリガー)。ここでは列の数は関係ありません。1つのステートメントで必要な数だけ変更できます。