सबसे पहले, एक UNIQUE
जोड़ें नाम, बारकोड, आइटम, स्थान और कीमत पर प्रतिबंध।
ALTER TABLE tableX
ADD CONSTRAINT tableX_UQ
UNIQUE (name, barcode, item, location, price) ;
फिर आप INSERT INTO ... ON DUPLICATE KEY UPDATE
. का उपयोग कर सकते हैं :
INSERT INTO tableX
(name, barcode, item, location, price, quantity, date)
VALUES
(?, ?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE
quantity = CASE WHEN VALUES(date) > date
THEN quantity + VALUES(quantity) -- add quantity
ELSE quantity -- or leave as it is
END
, date = CASE WHEN VALUES(date) > date
THEN VALUES(date) ; -- set date to new date
ELSE date -- or leave as it is
END
REPLACE
भी इस्तेमाल किया जा सकता है लेकिन व्यवहार में अंतर हैं (जो विशेष रूप से मायने रखता है यदि आपके पास विदेशी कुंजी है)। विवरण के लिए, यह प्रश्न देखें “INSERT IGNORE “बनाम” INSERT … डुप्लीकेट कुंजी अद्यतन पर ”
और @Bill Kawin द्वारा उत्तर जो INSERT IGNORE
के बीच के अंतरों पर चर्चा करता है , INSERT ... ON DUPLICATE KEY
और REPLACE
।