sql >> Database >  >> RDS >> Mysql

IF-statement in MySQL gebruiken om te updaten of in te voegen zonder Stored Procedure?

MySQL heeft speciale functionaliteit voor deze situatie. Het heet INSERT...ON DUPLICATE KEY UPDATE . Wat het doet, is dat het probeert INSERT een record, maar als het al bestaat, wordt het gewoon UPDATE het. '

Om deze functionaliteit te laten werken, moet u een UNIQUE . hebben beperking op tafel. Op basis van uw voorbeeld kan ik zien dat u de twee kolommen controleert op het bestaan ​​ervan. Als u al een PRIMARY KEY . heeft , je kunt gewoon een UNIQUE . toevoegen beperking op beide kolommen.

ALTER TABLE oc_product_attribute 
      ADD CONSTRAINT tb_uq UNIQUE(PRODUCT_ID, ATTRIBUTE_ID)

Nadat het is uitgevoerd, kunt u nu INSERT..ON DUPLICATE KEY UPDATE gebruiken

INSERT INTO oc_product_attribute (PRODUCT_ID, ATTRIBUTE_ID, OtherCol, TEXT)
SELECT  MAX(PRODUCT_ID), MAX(ATTRIBUTE_ID), 1, 'XYZ'
FROM
        (
            SELECT  PRODUCT_ID, NULL ATTRIBUTE_ID 
            FROM    oc_product_description 
            WHERE   NAME = 'PRODUCT_NAME_HERE'
            UNION ALL
            SELECT  NULL PRODUCT_ID, ATTRIBUTE_ID 
            FROM    oc_attribute_description 
            WHERE   NAME='ATTRIBUTE_NAME_HERE'
        ) x
ON  DUPLICATE KEY UPDATE TEXT = 'ABC'

-- change OtherCol to the name of your column which you want to insert 1


  1. Hoe maak je een back-up en herstel je een database als een kopie op dezelfde server?

  2. 2 Functies die de naam van de maand retourneren van een datum in MySQL

  3. Hoe stel ik de timer in om elke n minuten een functie aan te roepen?

  4. Oracle join-syntaxisvoorbeelden