Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MYSQL सम्मिलित करें या अद्यतन करें यदि

सबसे पहले, एक 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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - एक INSERT कथन के अंदर एक स्ट्रिंग मान को DATETIME प्रारूप में कैसे पार्स करें?

  2. ActiveRecord त्रुटि:SAVEPOINT active_record_1 मौजूद नहीं है

  3. MySQL संग्रहीत प्रक्रिया में आईडी की सूची कैसे पास करें?

  4. कैननिकल फंक्शन EntityFunctions.TruncateTime MYSQL में मौजूद नहीं है

  5. MySqlCommand कॉल फ़ंक्शन