Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Was sind praktische Unterschiede zwischen `REPLACE` und `INSERT ... ON DUPLICATE KEY UPDATE` in MySQL?

REPLACE führt intern eine Löschung und dann eine Einfügung durch. Dies kann Probleme verursachen, wenn Sie eine Fremdschlüsseleinschränkung haben, die auf diese Zeile zeigt. In dieser Situation ist REPLACE könnte fehlschlagen oder schlimmer:Wenn Ihr Fremdschlüssel auf Kaskadenlöschung eingestellt ist, wird REPLACE bewirkt, dass Zeilen aus anderen Tabellen gelöscht werden. Dies kann passieren, obwohl die Einschränkung sowohl vor als auch nach dem REPLACE erfüllt wurde Betrieb.

Mit INSERT ... ON DUPLICATE KEY UPDATE vermeidet dieses Problem und wird daher bevorzugt.