MySQL unterstützt nur die IF
Anweisung in Programmierblöcken - gespeicherte Prozeduren, Funktionen und Trigger. Daher können Sie nicht so tun, was Sie wollen.
Stattdessen können Sie nur eine einzelne Abfrage schreiben:
INSERT INTO Products (product_id, name, category, manufacturer)
SELECT product_id, name, category, manufacturer
FROM (SELECT 10000 as product_id, 'IphoneZ' as name, null as category, 'appl' as manufacturer) t
WHERE NOT EXISTS (SELECT 1 FROM Products p WHERE p.name = t.name and p.manufacturer = t.manufacturer);
Eigentlich aber ist es am besten direkt auf die Datenbank, diese Art von Eindeutigkeit erzwingen zu haben. Sie können dies mit einem eindeutigen Constraint/index:
CREATE UNIQUE INDEX unq_product_manufacturer_name ON product(manufacturer, name);
Dann können Sie eine Abfrage schreiben, um Fehler zu ignorieren, indem Sie:
INSERT INTO Products (product_id, name, category, manufacturer)
VALUES (10000, 'IphoneZ', null, 'appl')
ON DUPLICATE KEY UPDATE category = VALUES(category);
Die ON DUPLICATE KEY
nichts tun - es dient nur zu Vermeiden Sie die Rückgabe eines Fehlers, wenn ein doppelter Wert eingefügt wird.
Doppelte Anführungszeichen anstatt einzelner? – jarlh
lesen Sie das Handbuch http://dev.mysql.com/doc/refman/5.7/en/exists-and-not-exists-subqueries.html – 2oppin
Googeln Sie Ihren Titel und 'mysql': http://stackoverflow.com/questions/5528854/using-of-mysqls-wenn-existiert. Bitte lesen [fragen]. – philipxy