2011年3月计算机四级数据库试题倒数第二道题怎么做啊?解析也看不懂。求高人指点! 10

2.在SQLServer2000中,设某数据库中有商品表(商品号,商品名,进货价格),商品号为主码;销售表(商品号,销售时间,销售数量,销售价格,本次利润),商品号和销售... 2. 在SQLServer 2000中,设某数据库中有商品表(商品号,商品名,进货价格),商品号为主码;销售表(商品号,销售时间,销售数量,销售价格,本次利润),商品号和销售时间为主码,销售价格为本次销售商品的单价。现要求每当在销售表中插入前4列数据时(假设一次只插入一行数据),系统自动计算本次销售产生的利润,并将该利润赋给销售表的第5列“本次利润”。请编写实现上述功能的后触发型触发器代码。(10分)

答案:CREATE TRIGGER update_sale
ON 销售表 FOR UPDATE
FOR EACH ROW
AS BEGIN
UPDATE
Table_sale SET 本次利润=销售价格-(SELECT
进货价格
FROM 产品表)
END
CREATE TRIGGER Insert_sale
ON 销售表 FOR INSERT
FOR EACH ROW
AS BEGIN
INSERT INTO 销售表 VALUES(new.商品号,new.销售时间,new.销售数量,new.销售价格)
END

为什么要用两个触发器?new.**是什么意思?能否把每一步有什么作用写上?谢谢了!!!
展开
 我来答
dabenger
2012-09-19 · TA获得超过214个赞
知道小有建树答主
回答量:369
采纳率:78%
帮助的人:206万
展开全部
--创建该触发器用于更新某一行数据时重新计算第5列的值
CREATE TRIGGER update_sale
ON 销售表 FOR UPDATE ----->当行更新事件发生后
FOR EACH ROW ----->针对每一行都触发
AS BEGIN
UPDATE ----->重新取值,执行更新操作
Table_sale SET 本次利润=销售价格-(SELECT
进货价格
FROM 产品表)
END

--创建该触发器用于插入某一行数据后重新计算第5列的值

CREATE TRIGGER Insert_sale
ON 销售表 FOR INSERT
FOR EACH ROW
AS BEGIN
INSERT INTO 销售表 VALUES(new.商品号,new.销售时间,new.销售数量,new.销售价格)
END

new.代表当前新插入行的对象,new.商品号表示新插入行的商品号字段的值

同理,如果是删除的触发器,有old.一说
追问
1.以下两句是不是冲突的?更新是对某行的操作,不能每行都执行吧?
ON 销售表 FOR UPDATE ----->当行更新事件发生后
FOR EACH ROW ----->针对每一行都触发
2、第二个触发器有计算本次利润吗?
3、这两个触发器是不是意味着输入四列之后,自动算出第五列,并且再插入一行,也就是变成了两天记录?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式