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