sql >> Database teknologi >  >> RDS >> Mysql

MySQL-datavalidering ved indsættelse

Lad os sige, at du har et par borde:

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

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

Du kan oprette en trigger der summerer ItemID og sammenligner med NumAvailable for den pågældende vare. Det ville se sådan ud (kan have fejl, kun en generel idé præsenteret :) . Metoden til fejl hentet fra her , kan der være en bedre måde tilgængelig):

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. Gruppér DateTime i 5,15,30 og 60 minutters intervaller

  2. Skift et logins standardsprog i SQL Server

  3. Vælg en post, bare hvis den før den har en lavere værdi

  4. Sådan fungerer funktionen WEIGHT_STRING() i MySQL