sql >> Database >  >> RDS >> Mysql

MYSQL INSERT of UPDATE IF

Voeg eerst een UNIQUE . toe beperking op naam, streepjescode, artikel, locatie en prijs.

ALTER TABLE  tableX
  ADD CONSTRAINT tableX_UQ
    UNIQUE (name, barcode, item, location, price) ;

Dan kunt u INSERT INTO ... ON DUPLICATE KEY UPDATE . gebruiken :

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 kan ook worden gebruikt, maar er zijn verschillen in het gedrag (wat vooral van belang is als u externe sleutels hebt). Zie deze vraag voor meer informatie “INSERT IGNORE ” vs “INSERT … ON DUPLICATE KEY UPDATE” en het antwoord van @Bill Kawin dat de verschillen bespreekt tussen INSERT IGNORE , INSERT ... ON DUPLICATE KEY en REPLACE .



  1. OTA instellen in R12 en 11i

  2. het negeren van mysql fulltext stopwoorden in query

  3. hoe mysql-schema te maken in nodejs

  4. MySQL-verbindingen van localhost beperken om de beveiliging te verbeteren