MySQL memiliki fungsi khusus pada situasi ini. Ini disebut INSERT...ON DUPLICATE KEY UPDATE
. Apa yang dilakukannya adalah mencoba INSERT
catatan tetapi jika sudah ada, itu hanya akan UPDATE
dia. '
Agar fungsi ini berfungsi, Anda harus memiliki UNIQUE
kendala di atas meja. Berdasarkan contoh Anda, saya dapat melihat bahwa Anda memeriksa dua kolom untuk keberadaannya. Jika Anda sudah memiliki PRIMARY KEY
, Anda cukup menambahkan UNIQUE
kendala pada kedua kolom.
ALTER TABLE oc_product_attribute
ADD CONSTRAINT tb_uq UNIQUE(PRODUCT_ID, ATTRIBUTE_ID)
Setelah dieksekusi, Anda sekarang dapat menggunakan 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