我不知道MySQL(或任何数据库)是否可以做到这一点,但我认为可以做到。
我有一张桌子,有多个字段。其中一个字段跟踪可用“项目”的总数,另一个字段显示当前正在使用的数量。
是否可以在UPDATE语句中验证传入数据,以便在使用的项目数量大于可用总数时UPDATE将失败? IE可以根据另一个字段的内容为字段添加数字限制吗?
答案 0 :(得分:5)
假设您有几张桌子:
Items
------------
ItemID
NumAvailable
-------------
Checkout
-----------
UserID
ItemID
-----------
您可以create a trigger对ItemID
求和,并与该特定项目的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 ......