Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Bedingte mySQL-Anweisung. Wenn wahr UPDATE, wenn falsch INSERT

AKTUALISIERUNG: Beachten Sie, dass Sie IF EXISTS verwenden müssen statt IS NULL wie in der ursprünglichen Antwort angegeben.

Code zum Erstellen einer gespeicherten Prozedur, um die gesamte Logik zu kapseln und zu prüfen, ob Flavors vorhanden sind:

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 ;

ORIGINAL:

Sie könnten diesen Code verwenden. Es prüft, ob ein bestimmter Datensatz vorhanden ist, und wenn das Recordset NULL ist, wird es durchgehen und den neuen Datensatz für Sie einfügen.

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;

Ich bin mit meiner MySQL-Syntax etwas eingerostet, aber dieser Code sollte Sie zumindest zum größten Teil dorthin bringen, anstatt ON DUPLICATE KEY zu verwenden.