Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Instrução condicional do mySQL. Se verdadeiro UPDATE, se falso INSERT


ATUALIZAÇÃO: Observe que você precisa usar IF EXISTS em vez de IS NULL como indicado na resposta original.

Código para criar o procedimento armazenado para encapsular toda a lógica e verificar se os Flavors existem:
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:

Você poderia usar este código. Ele verificará a existência de um registro específico e, se o conjunto de registros for NULL, ele passará e inserirá o novo registro para você.
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;

Estou um pouco enferrujado na minha sintaxe do MySQL, mas esse código deve pelo menos levá-lo a maior parte do caminho, em vez de usar ON DUPLICATE KEY.