現在、MySQL データベースで次の SQL ステートメントを実行しています。
INSERT INTO `Table` (`Col1`, `Col2`, `Col3`) VALUES ('a','b','c')
ON DUPLICATE KEY UPDATE `Col1`=`Col1`, `Col2`=`Col2`, `Col3`=`Col3`
ただし、実行するたびに、次のエラーが発生します#1205 - Lock wait timeout exceeded; try restarting transaction
。正確に何が間違っていたのか分からないので、それはかなり恐ろしいことです。私の意図は、既存の行のすべての値を更新することです(id
テーブルの主キーである を除く)。
何かアイデアがありましたら、お知らせください。
編集:詳細情報... これid
は自動インクリメント フィールドです。別の列もありUNIQUE
ます (それを と呼びましょうIdentityNo
。したがって、ステートメントで実行したいのは、1. に競合がない場合は挿入しIdentityNo
、2. 競合がある場合は既存の行を更新します(を変更せずに)。 id
)。