0


0

MySQL REPLACEコマンドの実行中、MySQL InnoDB ON UPDATE CASCADE制約は適切に更新されますか?

テーブルAへの外部キー参照を持つテーブルB(ON UPDATE CASCADEに設定)があり、

LOAD DATA INFILE file.txt REPLACE INTO TABLE A;

コマンド、参照は適切に更新されますか?

ON DELETE CASCADEについては話していないことに注意してください。 REPLACEコマンドを実行すると、テーブルBのレコードが削除されます。

2 Answer


0


私は実際に同じような答えを探してここに来ました。 制約にON DELETE CASCADEが設定されている限り、REPLACE INTOはまだアイテムを削除するようです。


0


MySQLは、置換クエリの結果として更新イベントを起動せず、削除のみを起動します。 これが理由です:

_ _ REPLACEはINSERTとまったく同じように機能しますが、テーブル内の古い行がPRIMARY KEYまたはUNIQUEインデックスの新しい行と同じ値である場合、新しい行が挿入される前に古い行が削除されます。

(http://dev.mysql.com/doc/refman/5.0/en/replace.html[MySQL 5.0リファレンスマニュアル]から) _ _

ON UPDATE CASCADE ON DELETE SET NULLで設定された外部キーがあり、外部テーブルのプライマリキーにREPLACEを実行すると、関連テーブルの外部キーがNULLに設定されます。