触发器实例

本文介绍了如何在数据库中创建并使用SQL触发器,包括插入、更新和删除操作的触发器实现,以及触发器的基本概念和重要性。通过具体实例展示了触发器在数据库管理中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


  
--创建一个插入操作的触发器:当向学生选课表SC中插入一条记录后,变更在学生表STUDENT对应学生的选课门数。   CREATE TRIGGER STU_IN   ON SC---对哪个表或者视图进行操作   FOR INSERT--设定触发条件,也就是在什么情况下会触发这个触发器   AS    UPDATE STUDENT   SET SCNUM = SCNUM +1   FROM STUDENT INNER JOIN SC   ON STUDENT.SNO = SC.SNO     set statistics io on  set nocount on  insert into sc values('990001','001','99')   delete from sc where sno='990001' and cno='001'    --创建update触发器   CREATE TRIGGER STU_UP   ON STUDENT   FOR UPDATE  AS  IF UPDATE(SNO)   BEGIN  RAISERROR('不能对SNO字段进行更新',10,1)   ROLLBACK TRANSACTION  END    UPDATE STUDENT   SET SNO='990032'  WHERE SNO='990001'    --创建delete触发器   CREATE TRIGGER STU_DEL   ON STUDENT   FOR DELETE  AS  DELETE  FROM SC   WHERE SC.SNO IN(SELECT SNO FROM DELETED)     exec sp_helptext stu_in--查看已经创建好的触发器的创建语句     CREATE TRIGGER COM_UP   ON COMPUTER   INSTEAD OF UPDATE--INSTEAD OF主要用于对视图进行更新   AS  IF UPDATE(SNAME)------------------这个SNAME的值来自于输入update语句中的set后面的条件值   BEGIN  UPDATE STUDENT   SET SNAME=INSERTED.SNAME   FROM STUDENT INNER JOIN INSERTED   ON STUDENT.SNO=INSERTED.SNO   END  ELSE  BEGIN  UPDATE SC   SET CNO=INSERTED.CNO,   GRADE=INSERTED.GRADE   FROM SC INNER JOIN INSERTED   ON SC.SNO=INSERTED.SNO   END    UPDATE COMPUTER   SET GRADE=95   WHERE SNO='990028'    UPDATE COMPUTER   SET SNAME='王晓晓'-------------------与IF UPDATE(SNAME)中的SNAME相对应   where SNO='990028'    SELECT * FROM COMPUTER 

定义

触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。

实例

 

本文出自 “乔磊的博客 学习 进步” 博客,谢绝转载!

转载于:https://my.oschina.net/sucre/blog/296358

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值