以下に示すようなテーブルがあります
ItemAttMapID ItemAttributeID VendorID vItemID Qty
1 4 1 2 60
2 4 2 3 10
3 3 5 5 20
この表ItemAttMapID
には、auto_increment
primary_key
とItemAttributeID, VendorID, VItemID
ですUnique Mapping
。
次のクエリを使用しました
INSERT INTO `client`.`mapping`
(`ItemAttMapID`, `ItemAttributeID`, `VendorID`, `vItemID`, `Qty`)
VALUES
(NULL, 4, '2', '3', '70'),
(NULL, 3, '5', '5', '80')
ON DUPLICATE KEY UPDATE Qty = VALUES(Qty);
必要な適切な結果が得られますが、特定のレコードを更新する代わりに次のクエリを使用すると、新しいレコードが挿入されます。
INSERT INTO `client`.`mapping`
(`ItemAttMapID`, `ItemAttributeID`, `VendorID`, `vItemID`, `Qty`)
VALUES
(NULL, 2, '5', '5', '80')
ON DUPLICATE KEY UPDATE Qty = VALUES(Qty);
テーブルの変更は次のようになります
ItemAttMapID ItemAttributeID VendorID vItemID Qty
1 4 1 2 60
2 4 2 3 10
3 3 5 5 20
4 2 5 5 80
3番目の番号行を更新したいのですが、テーブルに新しいレコードを挿入しています。
ON DUPLICATE KEY UPDATE を使用してこれを達成するにはどうすればよいですか。
編集:
ON DUPLICATE KEY UPDATE を使用してレコード ( NOT THE ) を更新VendorID
しvItemID
ます。ItemAttributeID
ItemAttributeID
同じものVendorID
をクエリに入れるとvItemID
、レコードが更新され、そうでない場合は新しいレコードが挿入されるためです。