MysqlでON DUPLICATE KEY UPDATE姿勢を正しく使う
1408 ワード
ON DUPLICATE KEY UPDATE構文の目的は、データベースにレコードが存在する場合、この文を実行すると更新され、レコードが存在しない場合に挿入される重複性を解決することです.
注意点1:この文を使用するとき、この文がそのレコードに存在するかどうかを判断する基準は何ですか.同じ値は複数のレコードに同時に表示されるため、重複できないフィールドが必要です.
注意点2:ルールでは、挿入したレコードがUNIQUEインデックスまたはprimary key(プライマリ・キー)を繰り返すと、そのレコードが存在すると判断され、insert文ではなくupdate文が実行され、逆にinsert文が更新文ではなくinsert文が実行されます.だからON DUPLICATE KEY UPDATEはwhere条件を書くことができません.
実戦事例:
注意点1:この文を使用するとき、この文がそのレコードに存在するかどうかを判断する基準は何ですか.同じ値は複数のレコードに同時に表示されるため、重複できないフィールドが必要です.
注意点2:ルールでは、挿入したレコードがUNIQUEインデックスまたはprimary key(プライマリ・キー)を繰り返すと、そのレコードが存在すると判断され、insert文ではなくupdate文が実行され、逆にinsert文が更新文ではなくinsert文が実行されます.だからON DUPLICATE KEY UPDATEはwhere条件を書くことができません.
実戦事例:
INSERT INTO chip_montage_inprogress(activity_id, unique_code, chip_index_one, chip_index_two, chip_index_three, chip_index_four, chip_index_five, chip_index_six, chip_index_seven, chip_index_eight, chip_index_nine, chip_montage_finished)
VALUES (#{activityId},#{uniqueCode},#{chipIndexOne},#{chipIndexTwo},#{chipIndexThree},#{chipIndexFour}, #{chipIndexFive}, #{chipIndexSix}, #{chipIndexSeven}, #{chipIndexEight}, #{chipIndexNine}, #{chipMontageFinished})
ON DUPLICATE KEY UPDATE
chip_index_one =#{chipIndexOne},
chip_index_two=#{chipIndexTwo},
chip_index_two=#{chipIndexTwo},
chip_index_three=#{chipIndexThree},
chip_index_four=#{chipIndexFour},
chip_index_five=#{chipIndexFive},
chip_index_six=#{chipIndexSix},
chip_index_seven=#{chipIndexSeven},
chip_index_eight=#{chipIndexEight},
chip_index_nine=#{chipIndexNine}