首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建仅影响特定行的SQL触发器

问创建仅影响特定行的SQL触发器
EN

Stack Overflow用户
提问于 2013-04-11 05:14:32
回答 1查看 1.3K关注 0票数 0

我创建了两个表inventory和customer_sales。在仓库中工作的个人不能访问customer_sales表。

因此,我在inventory表中添加了一个名为num_sales的额外字段。

我想创建一个触发器功能,每当一个新的客户销售被添加。它将对应于销售的行的特定inventory_item,而不是整个表。

这就是我到目前为止所拥有的。

代码语言:javascript
复制
ALTER TABLE inventory 
ADD num_sales INT 

UPDATE movies SET num_sales = 0;

ALTER TABLE movies ALTER COLUMN num_rentals INT NOT NULL;

GO
CREATE TRIGGER tr_movies_num_rentals_add
   ON customer_sales FOR INSERT
   AS
   BEGIN
     UPDATE inventory
       SET num_sales = num_sales + (SELECT sale_status_code FROM INSERTED)
       WHERE 1 = (SELECT sale_status_code FROM INSERTED);
   END;

注: sale_status_code取值: 1=sold、2=reserved、3=lost。

更新:我使用的是Microsoft SQL server management studio。我是新手,这是我在学校遇到的一个问题。

EN

回答 1

Stack Overflow用户

发布于 2013-04-11 05:59:24

首先,假设插入的数据有多行。SQL server触发器不逐行操作。YOu需要连接到inserted而不是使用子查询。接下来,如果您希望在insert、update和delete时发生这种情况,那么您需要使用的不仅仅是一个INSert触发器。delete触发器应该使用与inserted和updated不同的公式,因为您将从库存合计中减去删除表中的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15936559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档