UPDATE: Let op:je moet IF EXISTS
. gebruiken in plaats van IS NULL
zoals aangegeven in het oorspronkelijke antwoord.
Code om opgeslagen procedure te creëren om alle logica in te kapselen en te controleren of Flavours bestaan:
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 ;
ORIGINEEL:
Je zou deze code kunnen gebruiken. Het zal controleren op het bestaan van een bepaald record en als de recordset NULL is, zal het de nieuwe record voor u invoegen en invoegen.
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;
Ik ben een beetje roestig met mijn MySQL-syntaxis, maar die code zou je in ieder geval het grootste deel van de weg daarheen moeten brengen, in plaats van ON DUPLICATE KEY te gebruiken.