2

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

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

是否可以在 UPDATE 语句中验证传入数据,这样如果正在使用的项目数大于可用的总数,则 UPDATE 将失败?IE 我可以根据另一个字段的内容向一个字段添加数字限制吗?

4

2 回答 2

5

假设您有几张桌子:

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

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

您可以创建一个触发器,对特定项目的 进行求和ItemID并与 进行比较。NumAvailable它看起来像这样(可能有错误,只提出一般想法:)。从这里收集的错误方法,可能有更好的方法可用):

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
于 2013-01-25T07:21:10.950 回答
-2
update tableName set useItemColumnName= case when totalItemColumnName>=amount then amount else useItemColumnName end .

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

于 2013-01-25T07:22:30.230 回答