INSERT ... ON DUPLICATE KEY UPDATE
文では、UPDATE
句の VALUES(col_name)
関数を使用して、ステートメントの INSERT
部分からのカラム値を参照することができます。つまり、UPDATE
句内の VALUES(col_name)
は、複製キーとの衝突もなく、インサートされる col_name
値を参照するということです。この関数は複数行のインサートにおいて特に便利です。VALUES()
関数は、INSERT ... ON DUPLICATE KEY UPDATE
文においてのみ有用で、その他では NULL
を戻します。項12.2.4.3. 「INSERT ... ON DUPLICATE KEY UPDATE
構文」 参照。
mysql>INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
->ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);