sql >> Databáze >  >> RDS >> Mysql

Podmíněný příkaz mySQL. Pokud je pravda UPDATE, pokud je nepravda, INSERT

AKTUALIZACE: Všimněte si, že musíte použít IF EXISTS místo IS NULL jak je uvedeno v původní odpovědi.

Kód pro vytvoření uložené procedury pro zapouzdření veškeré logiky a kontrolu, zda existují Flavors:

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 ;

ORIGINÁL:

Můžete použít tento kód. Zkontroluje existenci konkrétního záznamu, a pokud je sada záznamů NULL, projde a vloží nový záznam za vás.

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;

Jsem trochu zrezivělý na syntaxi MySQL, ale tento kód by vás měl alespoň dostat většinu cesty, spíše než používat ON DUPLICATE KEY.



  1. Jak používat virtuální index v databázi Oracle

  2. Jak funguje WEEKDAY() v MariaDB

  3. Převeďte sloupec mysql DATETIME na epochové sekundy

  4. Připojte se ke vzdálené databázi MySQL pomocí VB.NET 2010