sql >> Base de Datos >  >> RDS >> Mysql

Sentencia mySQL condicional. Si es verdadero ACTUALIZAR, si es falso INSERTAR

ACTUALIZACIÓN: Tenga en cuenta que debe usar IF EXISTS en lugar de IS NULL como se indica en la respuesta original.

Código para crear un procedimiento almacenado para encapsular toda la lógica y comprobar si existen sabores:

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 ;

ORIGINALES:

Podrías usar este código. Verificará la existencia de un registro en particular, y si el conjunto de registros es NULL, lo procesará e insertará el nuevo registro por usted.

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;

Estoy un poco oxidado con mi sintaxis de MySQL, pero ese código al menos debería llevarte la mayor parte del camino, en lugar de usar ON DUPLICATE KEY.