MySQL数据插入验证
我不知道MySQL(或任何数据库)是否可以做到这一点,但我假设它可以做到 我有一个表,有多个字段。其中一个字段跟踪可用“项目”的总数,另一个字段保存当前正在使用的项目数MySQL数据插入验证,mysql,Mysql,我不知道MySQL(或任何数据库)是否可以做到这一点,但我假设它可以做到 我有一个表,有多个字段。其中一个字段跟踪可用“项目”的总数,另一个字段保存当前正在使用的项目数 是否可以验证UPDATE语句中的传入数据,以便在使用的项目数大于可用的项目总数时更新将失败?IE我可以根据另一个字段的内容为该字段添加数字限制吗?假设您有两个表: Items ------------ ItemID NumAvailable ------------- Checkout ----------- UserID I
是否可以验证UPDATE语句中的传入数据,以便在使用的项目数大于可用的项目总数时更新将失败?IE我可以根据另一个字段的内容为该字段添加数字限制吗?假设您有两个表:
Items
------------
ItemID
NumAvailable
-------------
Checkout
-----------
UserID
ItemID
-----------
您可以对ItemID
求和,并与该特定项的NumAvailable
进行比较。它看起来像这样(可能有错误,只提供了一般的想法:)。从中收集错误的方法,可能有更好的方法):
注意:
amount
是可更新的变量。它可能是1、2、3…在更新之前,您基本上是在寻找一个触发器来验证值。如果您需要创建触发器的帮助,请参阅。这不是我想要的。如果我理解正确的话。如果新金额大于允许的最大值,我希望更新失败。是更新将失败。请参见下面的示例。我在我的db tableupdate测试集中使用了use_pro=case,当total_pro>=1然后1 else use_pro endYep时,触发器看起来正是我想要的。令人遗憾的是,在SQL中,中止更新是一件非常麻烦的事情,但我想这是没办法的。谢谢
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
update tableName set useItemColumnName= case when totalItemColumnName>=amount then amount else useItemColumnName end .