用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

柯侧耳倾听者    -  云代码空间

—— 翱翔在Java世界的海洋之上

触发器

2017-12-25|1874阅||

摘要: 触发器 实验目的:  掌握触发器的基本概念;  掌握创建触发器的方法;  掌握管理和维护触发器的方法。 一、 实验内容:  创建并验证下列触发器: 1、 在销售表上创建AFTER触发的INSERT触发器,当用户插入一条新销售记录时,如果销售数量大于

 触发器

实验目的:  掌握触发器的基本概念;  掌握创建触发器的方法;  掌握管理和维护触发器的方法。

一、 实验内容:

 创建并验证下列触发器:

1、 在销售表上创建AFTER触发的INSERT触发器,当用户插入一条新销售记录时,如果销售数量大于产品信息表上的库存量,则不能实现插入操作,并给出提示信息;

CREATE TRIGGER 销售trig_insert1 ON 销售 

 FOR INSERT 

 AS 

 BEGIN 

  DECLARE @Quantity float, @Stock int, @ProductNum char(6) 

  SELECT @ProductNum=产品编号, @Quantity=数量 FROM INSERTED 

  SELECT @Stock=库存量 FROM 产品信息 WHERE 产品编号=@ProductNum 

  IF @Quantity>@Stock  --销售数量大于库存量不执行当前操作

  BEGIN 

   RAISERROR('销售数量超出库存,不能销售!',7,1) 

   ROLLBACK TRANSACTION 

  END 

 END 

 

INSERT 

INTO 销售

VALUES('000009','100009','2008-06-21',9,9000)

 

当在触发器中改成:

INSERT 

INTO 销售

VALUES('000001','100001','2008-06-21',50,9000)

 

 

2、 将上题的触发器改为INSTEAD OF触发器;

CREATE TRIGGER 销售trig_insert2 ON 销售 

 INSTEAD OF INSERT 

 AS 

 BEGIN 

  DECLARE @Quantity float, @Stock int, @ProductNum char(6) 

  SELECT @ProductNum=产品编号, @Quantity=数量 FROM INSERTED 

  SELECT @Stock=库存量 FROM 产品信息 WHERE 产品编号=@ProductNum 

  IF @Quantity>@Stock  --销售数量大于库存量不执行当前操作

  BEGIN 

   RAISERROR('销售数量超出库存,不能销售!',7,1) 

   ROLLBACK TRANSACTION 

  END 

  ELSE 

   INSERT INTO 销售 SELECT * FROM INSERTED 

 END 

 

INSERT 

INTO 销售

VALUES('000001','100001','2017-11-24',50,5000);

 

 

INSERT 

INTO 销售

VALUES('000002','100001','2017-11-24',5,7000);

 

 

3、 在销售表上创建AFTER触发的INSERT触发器,当用户插入一条新销售记录时,如果销售数量大于产品信息表上的库存量,则不能实现插入操作,并给出提示信息;如果可以的话,要同时更新产品信息表,使其库存量减少相应的数量;

 

CREATE TRIGGER 销售trig_insert3 ON 销售 

 FOR INSERT 

 AS 

 BEGIN 

  DECLARE @Quantity float, @Stock int, @ProductNum char(6) 

  SELECT @ProductNum=产品编号, @Quantity=数量 FROM INSERTED 

  SELECT @Stock=库存量 FROM 产品信息 WHERE 产品编号=@ProductNum 

  IF @Quantity>@Stock  --销售数量大于库存量不执行当前操作

   BEGIN 

    RAISERROR('销售数量超出库存,不能销售!',7,1) 

    ROLLBACK TRANSACTION 

   END 

  ELSE 

   UPDATE 产品信息 SET 库存量=库存量-@Quantity WHERE 产品编号=@ProductNum 

 END  

INSERT 

INTO 销售

VALUES('000001','100001','2017-11-24',50,5000);

 

 

INSERT 

INTO 销售

VALUES('000001','100001','2017-11-24',10,5000);

     

 

三、相关知识:创建触发器的语法格式:

CREATE TRIGGER trigger_name  

ON { table | view }  FOR|AFTER|INSTEAD OF

{ [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }  

 AS  

sql_statement  

四、 实验方法及步骤(代码):

sql server环境下用T-SQL完成。

五、 结论及体会:

通过实验掌握触发器的基本概念、创建触发器、管理和维护触发器的方法。

顶 0踩 0收藏
文章评论
    发表评论

    个人资料

    • 昵称: 柯侧耳倾听者
    • 等级: 初级设计师
    • 积分: 2220
    • 代码: 64 个
    • 文章: 64 篇
    • 随想: 5 条
    • 访问: 44 次
    • 关注

    标签

    最新提问

      站长推荐