单选题 在SQL Server 2000中,有商品表(商品号,商品名,单价)和销售表(商品号,销售时间,销售价格)。现要限制“销售价格”的取值必须在此商品“单价”的0.6~1.5倍范围之内,实现这个约束的正确代码是______。
  • A.CHECK(销售价格 BETWEEN 单价*0.6 AND 单价*1.5)
  • B.CHECK(销售价格 BETWEEN 商品表. 单价*0.6 AND 商品表. 单价*1.5)
  • C.CREATE TRIGGER tri_Sales ON 销售表 FOR INSERT, UPDATE AS IF EXISTS(SELECT * FROM INSERTED a JOIN 商品表 b ON a. 商品号=b. 商品号 WHERE 销售价格 NOT BETWEEN 单价*0.6 AND 单价*1.5) ROLLBACK
  • D.CREATE TRIGGER tri_Sales ON 销售表 INSTEAD OF INSERT, UPDATE AS IF EXISTS(SELECT * FROM INSERTED a JOIN 商品表 b ON a. 商品号=b. 商品号 WHERE 销售价格 NOT BETWEEN 单价*0.6 AND 单价*1.5) ROLLBACK
【正确答案】 D
【答案解析】[解析] FOR指定触发器只有在引发的SQL语句中指定的操作都已成功执行,并且所有的约束检查也成功完成后,才执行此触发器,这种触发器称为后触发型触发器。INSTEAD OF指定执行触发器而不是执行引发触发器执行的SQL语句,从而替代触发语句的操作,称这种触发器为前触发型触发器。