MySQL staat if
. niet toe logica, tenzij u zich in een programmeerblok bevindt (opgeslagen procedure, trigger of functie).
Gelukkig kun je hetzelfde doen met WHERE
logica:
INSERT INTO user
SELECT 'Rutvij', 'python', 25
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM user WHERE name = 'Rutvij' AND lang = 'python')
UNION ALL
SELECT 'Kanzaria', 'python', 25
FROM DUAL
WHERE EXISTS (SELECT 1 FROM user WHERE name = 'Rutvij' AND lang = 'python');
MySQL zou de SELECT
. moeten verwerken voor de INSERT
, dus er mag maar één rij worden ingevoegd.
Of u kunt dit doen als twee INSERT
s maar in omgekeerde volgorde:
INSERT INTO user
SELECT 'Kanzaria', 'python', 25
FROM DUAL
WHERE EXISTS (SELECT 1 FROM user WHERE name = 'Rutvij' AND lang = 'python');
INSERT INTO user
SELECT 'Rutvij', 'python', 25
FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM user WHERE name = 'Rutvij' AND lang = 'python');