MySQL hat für diese Situation eine spezielle Funktionalität. Es heißt INSERT...ON DUPLICATE KEY UPDATE . Was es tut, ist, es versucht INSERT ein Datensatz, aber wenn er bereits existiert, wird er nur UPDATE es. '
Damit diese Funktion funktioniert, benötigen Sie einen UNIQUE Einschränkung auf dem Tisch. Anhand Ihres Beispiels kann ich sehen, dass Sie die beiden Spalten auf ihre Existenz überprüfen. Wenn Sie bereits einen PRIMARY KEY haben , können Sie einfach einen UNIQUE hinzufügen Einschränkung für beide Spalten.
ALTER TABLE oc_product_attribute
ADD CONSTRAINT tb_uq UNIQUE(PRODUCT_ID, ATTRIBUTE_ID)
Sobald es ausgeführt wurde, können Sie nun INSERT..ON DUPLICATE KEY UPDATE verwenden
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