在SQL Server 2008中,设某数据库中有商品表(商品号,商品名,进货价格),商品号为主码;销售表(商品
在SQL Server 2008中,设某数据库中有商品表(商品号,商品名,进货价格),商品号为主码;销售表(商品号,销售时间,销售数量,销售价格,本次利润),商品号和销售时间为主码,销售价格为本次销售商品的单价。现要求每当在销售表中插入前4列数据时(假设一次只插入一行数据),系统自动计算本次销售产生的利润,并将该利润赋给销售表的第5列“本次利润”。请编写实现上述功能的后触发型触发器代码。(10分)
【解题思路】触发器是用户定义在关系表上的一类由事件驱动的特殊过程。一旦定义,任何用户对表的增、删、改操作均由服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性控制。触发器类似于约束,但比约束更加灵活,可以实施比FOREIGN KEY约束、CHECK约束更为复杂的检查和操作,具有更精细和强大的数据控制能力。触发器的创建格式:CREATE TRIGGER[schema_name.]trigger_nameON{tablelview}{FORlAFFERIINSTEAD OF}{[INSERT][,][UPDATE][,][DELETE]}AS{Sql_statement}[;]对应于本题中,触发事件为在销售表中插入前四列,条件为无条件执行,触发体动作为计算本次利润并插入表中。【参考答案】CREATE TRIGGER calcu_productAFTER INSERT ON销售表FOR EACH ROWAS BEGINDECLARE@PurchasePrise float/*对应商品的进价的参数*/SELECT@PurchasePrise=进货价格FROM商品表WHERE商品号=new.商品号UPDATE销售表SET本次利润=new.销售数量*(new.销售价格-@PurchasePrise)WHERE商品号=new.商品号AND销售时间=New.销售时间/*因为是行级触发器,所以可以使用更新后的新值,用new*/END
在过去的2011年,因受各种因素的影响,猪肉市场的价格在不断变化,据调查去年6月份猪肉价格是1月份 数学 2020-04-07 …
下列关于MS SQL Server 2000的叙述中,正确的是A.在MS SQL Server 20 计算机类考试 2020-05-24 …
以下属于网络数据库SQL Server中常见的版本的是() 计算机类考试 2020-05-31 …
怎样使不同工作表中同一位置的数据组成一个变化曲线.我有个价格表,每天的价格都是不一样的.我把每天的 其他 2020-06-27 …
小王从圆柱形物体A接触水面至接触容器底之前,分别记下多组F、h,并将测量的结果填写在实验表格中,依据 物理 2020-11-01 …
统计学问题假设我手里有两组数据,格式都是一列A一列B,且数据都是配对数据,两组数据个数是相等的.已知 数学 2020-11-11 …
申论文章里的数字数据带小数点,例如12.77、1.277申论文章里的数字数据带小数点,例如12.77 其他 2020-12-16 …
一道应用题在过去的2011年,因受各种因素的影响,猪肉市场的价格在不断变化,据调查去年6月份猪肉价格 数学 2020-12-28 …
EXCEL根据某格值的不同范围,分别与其他值的的运算A1格要根据B2格在不同的范围,从而得出某个运算 其他 2020-12-31 …
现在有5个数据需要求和,我们用鼠标仅选中这5个数据而没有空白格,那么点击按钮后会出现什么情况?A.和 其他 2021-01-04 …