Mysql
 sql >> Database >  >> RDS >> Mysql

Istruzione MySQL condizionale. Se vero UPDATE, se falso INSERT

AGGIORNAMENTO: Nota che devi usare IF EXISTS invece di IS NULL come indicato nella risposta originale.

Codice per creare stored procedure per incapsulare tutta la logica e verificare se esistono Flavours:

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 ;

ORIGINALE:

Potresti usare questo codice. Verificherà l'esistenza di un record particolare e, se il recordset è NULL, passerà in rassegna e inserirà il nuovo record per te.

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;

Sono un po' arrugginito sulla mia sintassi MySQL, ma quel codice dovrebbe almeno portarti per la maggior parte del percorso, piuttosto che usare SU CHIAVE DUPLICATA.