Mysql
 sql >> база данни >  >> RDS >> Mysql

MYSQL INSERT или UPDATE IF

Първо добавете 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 ” срещу „ВМЪКНЕТЕ... ПРИ АКТУАЛИЗИРАНЕ НА ДУБЛИКАТ КЛЮЧ” и отговорът от @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 Преименуване на колона

  2. Вземете заключени таблици в mysql заявка

  3. Променете стъпката за автоматично нарастване на полетата с

  4. Свържете се с mysql база данни чрез SSH през PHP

  5. Има ли добър универсален PHP MySQL HTTP тунел?