sql >> Databasteknik >  >> RDS >> Mysql

Villkorligt mySQL-uttalande. Om sant UPPDATERA, om falskt INFOGA

UPPDATERING: Observera att du måste använda IF EXISTS istället för IS NULL som anges i det ursprungliga svaret.

Kod för att skapa lagrad procedur för att kapsla in all logik och kontrollera om smaker finns:

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:

Du kan använda den här koden. Den kommer att kontrollera om det finns en viss post, och om postuppsättningen är NULL kommer den att gå igenom och infoga den nya posten åt dig.

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;

Jag är lite rostig på min MySQL-syntax, men den koden borde åtminstone ta dig mest hela vägen dit, snarare än att använda ON DUBLIKATKEY.



  1. oracle plsql:hur man analyserar XML och infogar i tabellen

  2. När spolar SQL Server-sorter tillbaka?

  3. Administratörsskript i R12.2 Ebuisness Suite

  4. Hur använder man scheman i Django?