1 --1.) 创建测试用的表(testTable)
  2 if exists (select * from sysobjects where name='testTable')
  3 drop table testTable
  4 GO
  5 Create Table testTable
  6 (
  7 testField varchar(50)
  8 )
  9
 10  select * from testTable
 11
 12
 13
 14 --2.) 创建基于表(testTable)的触发器(testTrigger)
 15 IF EXISTS (Select name FROM sysobjects Where name = 'testTrigger' AND type = 'TR')
 16 Drop TRIGGER testTrigger
 17 GO
 18 Create Trigger testTrigger
 19 ON testTable
 20 for Insert,Delete,Update
 21 AS
 22 if exists(select * from inserted)
 23      if exists(select * from deleted)
 24          print '...更新'
 25      else
 26          print '...插入'
 27 else
 28      if exists(select * from deleted)
 29          print '...删除'
 30 Go
 31
 32
 33 --.) 操作testTable表,测试触发器testTrigger
 34 --分别执行Insert Into语句,Update语句,Delete语句,看看效果
 35 Insert Into testTable values ('testContent!')
 36
 37 Update testTable Set testField = 'UpdateContent'
 38
 39 Delete From testTable
 40
 41 select * from testTable
 42
 43
 44 --用到的功能有:
 45         --1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号);
 46         --2.如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录,等等。
 47
 48  --这时候可以用到触发器。对于需求1,创建一个Update触发器:
 49
 50      Create Trigger truStudent
 51
 52        On student      --在Student表中创建触发器
 53        instead of Update      --为什么事件触发
 54      As           --事件触发后所要做的事情
 55        if Update(stuID)
 56        begin
 57
 58          Update borrow
 59            Set stuID=i.stuID
 60            From borrow as br , Deleted as d ,Inserted as i      --Deleted和Inserted临时表
 61            Where br.stuID=d.stuID
 62
 63        end
 64
 65 drop trigger truStudent
 66 UPDATE student set stuID='1006' WHERE stuID='1005'
 67
 68
 69     Create trigger trdStudent
 70        On Student
 71        instead of Delete
 72      As
 73      Delete Borrow
 74    From Borrow as br , Deleted as d Where br.StuID=d.stuID
 75
 76 drop trigger trdStudent
 77 delete FROM student WHERE stuID='1004'
 78
 79 disable trigger trdStudent on Student
 80
 81 select * from book
 82 select * from borrow
 83 select * from student
 84
 85
 86 --创建触发器(对删除表的约束)
 87 create trigger droptabel
 88 on database
 89 for drop_table
 90 as
 91 print'删除表吗?'
 92 print'不能删除表'
 93 rollback transaction
 94 go
 95
 96 drop table students
 97 disable trigger droptabel on database    --关闭触发器
 98 enable trigger droptabel on database
 99
100
101
102
103
104 CREATE TABLE students  --学生信息表
105 (
106   stuID CHAR(10) primary key,  --学生编号
107   stuName  CHAR(10) NOT NULL ,     --学生名称
108   major  CHAR(50) NOT NULL    --专业
109 )
110 GO
111
112
113 CREATE TABLE borrowS  --借书表
114 (
115  borrowID  CHAR(10) primary key,    --借书编号
116 stuID CHAR(10) NOT NULL, --学生编号
117 BID  CHAR(10) NOT NULL,--图书编号
118  T_time  datetime NOT NULL,   --借出日期
119  B_time  datetime    --归还日期
120 )
121 GO
122
123 SElect * from students
124 select * from borrows
125
126 Create Trigger truStudents
127
128        On students      --在Student表中创建触发器
129        for Update      --为什么事件触发
130      As           --事件触发后所要做的事情
131        if Update(stuID)
132        begin
133
134          Update borrows
135            Set stuID=i.stuID
136            From borrows as br , Deleted as d ,Inserted as i      --Deleted和Inserted临时表
137            Where br.stuID=d.stuID
138
139        end
140
141
142
143 UPDATE studentS set stuID='1006' WHERE stuID='1005'
144
145
146     Create trigger trStudent
147        On Students
148        for Delete
149      As
150        Delete borrows
151          From borrows AS br , Deleted AS d
152          Where br.stuID=d.stuID
153
154
155 drop trigger trStudent
156
157
158 delete from students where stuID='1001'

转载于:https://www.cnblogs.com/cykj/p/SQLTrigger-instance-up.html

SQL触发器实例(上)相关推荐

  1. SQL触发器实例讲解1

    SQL触发器实例1 定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程.        常见的触发器有三种:分别应 ...

  2. SQL触发器实例讲解

    定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程.        常见的触发器有三种:分别应用于Insert , ...

  3. SQL触发器实例讲解(本文是来自百度文库)

    我想记录每个商品的点击量,然后按照点击量来牌名商品,想要提高效率,所以必须得用触发器,下面是本人在百度文库中的找到的学习资料,分享下给大家. 定义: 何为触发器?在SQL Server里面也就是对某一 ...

  4. SQL触发器实例讲解(转)

    定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程.       常见的触发器有三种:分别应用于Insert , ...

  5. SQL触发器实例(下)

    1 基本语法: 2 Create Trigger [TriggerName] 3 ON [TableName] 4 FOR [Insert][,Delete][,Update] 5 AS 6 --触发 ...

  6. SQL Server整合–在单个SQL Server实例上托管多个数据库

    介绍 (Introduction) Consolidating SQL Server databases and instances is a practice which, under certai ...

  7. SQL server 触发器实例讲解

    SQL触发器实例讲解(本文是来自百度文库) 定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程.        常 ...

  8. 触发器实例精讲-志在必得

    SQL触发器实例精讲,必看必会 定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程.        常见的触发器有 ...

  9. SQL触发器的使用及语法(转)

    定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程. 常见的触发器有三种:分别应用于Insert , Update ...

最新文章

  1. 林宙辰:实现机器学习科研从 0 到 1,没有什么比一个好的理论更加实用
  2. block的一些注意事项
  3. Lua------------------unity与lua的热更新
  4. 第七十二节,文本样式
  5. k8s创建pod的步骤
  6. linux 复制分区文件,dd复制分区后目标分区的大小变成原分区了
  7. 【转】使用PowerApps快速构建基于主题的轻业务应用 —— 进阶篇
  8. 华为方舟编译器开源官网正式上线
  9. python登录各种网页示例_Python 通过爬虫实现GitHub网页的模拟登录的示例代码
  10. Django进阶(CSRF、Ajax)
  11. 人工智能顶会顶刊以及SCI,IF,核心,分区
  12. EditPlus3破解版下载以及配置java使用教程
  13. Android 运行时权限检测流程,申请危险权限组权限代码
  14. dva开发框架简介和演示
  15. 音频原始数据能量检测算法
  16. 水仙花数(调用函数)
  17. shader 光照贴图
  18. MySQL 利用xtrabackup进行增量备份详细过程汇总
  19. 虚拟主机1-基于IP
  20. 陀螺仪加速度参数的标准计算

热门文章

  1. mysql 主从复制
  2. 高可用高性能负载均衡软件HAproxy详解指南-第三章:HAproxy实例
  3. 牛客网NOIP赛前集训营-普及组(第一场)
  4. 大数据之---Yarn伪分布式部署和MapReduce案例
  5. 【APIO2014】Palindromes
  6. 聊聊 iOS 中的网络加密
  7. H3C设备之RIP v2认证
  8. ElasticSearch(八):springboot集成ElasticSearch集群并使用
  9. centos6.5_64 java 环境变量配置
  10. luvit 被忽视的lua 高性能框架(仿nodejs)