sql >> Databasteknik >  >> RDS >> Mysql

MySQL-datavalidering vid insättning

Säg att du har ett par bord:

Items
------------
ItemID
NumAvailable
-------------

Checkout
-----------
UserID
ItemID
-----------

Du kan skapa en utlösare som summerar ItemID och jämförs med NumAvailable för just det föremålet. Det skulle se ut ungefär så här (kan ha fel, endast generell idé presenterad :) . Metoden för fel hämtad från här , det kan finnas ett bättre sätt tillgängligt):

CREATE TRIGGER check_available 
BEFORE INSERT ON Checkout 
FOR EACH ROW 
BEGIN
  SELECT IF (COUNT(new.ItemID) > Items.NumAvailable) THEN
    DECLARE dummy INT;
        SELECT 'No more items to check out!' INTO dummy 
  FROM new NATURAL JOIN Items WHERE NEW.ItemID = Items.ItemID
  END IF;
END


  1. Hur ställer jag in ett SQL Server-skripts timeout inifrån skriptet?

  2. Ändra materialiserad vyfråga

  3. Att använda utf8 eller inte - MySQL- och PHP-teckenkodningsproblem

  4. Hur man förhindrar mysql implicit commit