插入时的MySQL数据验证

时间:2013-01-25 06:54:25

标签: mysql

我不知道MySQL(或任何数据库)是否可以做到这一点,但我认为可以做到。

我有一张桌子,有多个字段。其中一个字段跟踪可用“项目”的总数,另一个字段显示当前正在使用的数量。

是否可以在UPDATE语句中验证传入数据,以便在使用的项目数量大于可用总数时UPDATE将失败? IE可以根据另一个字段的内容为字段添加数字限制吗?

2 个答案:

答案 0 :(得分:5)

假设您有几张桌子:

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

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

您可以create a triggerItemID求和,并与该特定项目的NumAvailable进行比较。它看起来像这样(可能有错误,只提出一般的想法:)。从here收集错误的方法,可能有更好的方法可用):

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 :(得分:-2)

update tableName set useItemColumnName= case when totalItemColumnName>=amount then amount else useItemColumnName end .

注意:amount是您的可更新变量。它可能是1,2,3 ......