MySQLには、この状況に対応する特別な機能があります。これは、INSERT...ON DUPLICATE KEY UPDATEと呼ばれます。 。 INSERTを試行します レコードですが、すでに存在する場合は、UPDATEだけになります それ。 '
この機能を動作させるには、UNIQUEが必要です。 テーブルの制約。あなたの例に基づいて、あなたがその存在について2つの列をチェックしていることがわかります。すでにPRIMARY KEYをお持ちの場合 、UNIQUEを追加するだけです 両方の列に制約があります。
ALTER TABLE oc_product_attribute
ADD CONSTRAINT tb_uq UNIQUE(PRODUCT_ID, ATTRIBUTE_ID)
実行されると、INSERT..ON DUPLICATE KEY UPDATEを使用できるようになります。
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