Mysql
 sql >> база данни >  >> RDS >> Mysql

Условен mySQL израз. Ако е вярно UPDATE, ако е false INSERT

АКТУАЛИЗИРАНЕ: Имайте предвид, че трябва да използвате IF EXISTS вместо IS NULL както е посочено в оригиналния отговор.

Код за създаване на съхранена процедура за капсулиране на цялата логика и проверка дали съществуват аромати:

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 ;

ОРИГИНАЛ:

Можете да използвате този код. Той ще провери за съществуването на конкретен запис и ако наборът от записи е NULL, тогава ще премине през и ще вмъкне новия запис вместо вас.

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;

Малко съм ръждясал по моя MySQL синтаксис, но този код трябва поне да ви доведе до по-голямата част от пътя, вместо да използвате ON DUPLICATE KEY.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да вмъкна множество стойности в mysql и да избегна дублирането

  2. 1093 Грешка в MySQL таблицата е посочена два пъти

  3. AWS MySQL RDS срещу AWS DynamoDB

  4. Как да експортирате MySQL база данни в JSON?

  5. Избягвайте повтарящи се записи, показвани в MySQL / PHP