MISE À JOUR : Notez que vous devez utiliser IF EXISTS
au lieu de IS NULL
comme indiqué dans la réponse d'origine.
Code pour créer une procédure stockée pour encapsuler toute la logique et vérifier si les saveurs existent :
DELIMITER //
DROP PROCEDURE `GetFlavour`//
CREATE PROCEDURE `GetFlavour`(`FlavourID` INT, `FlavourName` VARCHAR(20))
BEGIN
IF EXISTS (SELECT * FROM Flavours WHERE ID = FlavourID) THEN
UPDATE Flavours SET ID = FlavourID;
ELSE
INSERT INTO Flavours (ID, Name) VALUES (FlavourID, FlavourName);
END IF;
END //
DELIMITER ;
ORIGINE :
Vous pouvez utiliser ce code. Il vérifiera l'existence d'un enregistrement particulier, et si le jeu d'enregistrements est NULL, il passera en revue et insérera le nouvel enregistrement pour vous.
IF (SELECT * FROM `TableName` WHERE `ID` = 2342 AND `Name` = 'abc') IS NULL THEN
INSERT INTO `TableName` (`ID`, `Name`) VALUES ('2342', 'abc');
ELSE UPDATE `TableName` SET `Name` = 'xyz' WHERE `ID` = '2342';
END IF;
Je suis un peu rouillé sur ma syntaxe MySQL, mais ce code devrait au moins vous permettre d'atteindre la majeure partie du chemin, plutôt que d'utiliser ON DUPLICATE KEY.