【正确答案】
【答案解析】CREATE TRIGGER calcu_product
AFTER INSERT ON 销售表
FOR EACH ROW
AS BEGIN
DECLARE @PurchasePrise float /*对应商品的进价的参数*/
SELECT @PurchasePrise=进货价格 FROM 商品表 WHERE 商品号=new.商品号
UPDATE 销售表 SET 本次利润=new.销售数量*(new.销售价格-@PurchasePrise) WHERE 商品号=new.商品号AND 销售时间=new.销售时间
/*因为是行级触发器,所以可以使用更新后的新值,用new*/
END
[解析] 触发器是用户定义在关系表上的一类由事件驱动的特殊过程。一旦定义,任何用户对表的增、删、改操作均由服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性控制。触发器类似于约束,但比约束更加灵活,可以实施比FOREIGN KEY约束、CHECK约束更为复杂的检查和操作,具有更精细和强大的数据控制能力。
触发器的创建格式:
CREATE TRIGGER [Schema-name.] trigger-name
ON{table|view}
{FOR|AFTER|INSTEAD OF}
{[INSERT][,][UPDATE][,][DELETE]}
AS{Sql-statement}
[;]
对应于本题中,触发事件为在销售表中插入前四列,条件为无条件执行,触发体动作为计算本次利润并插入表中。