SQL Server2008 学习之(十六) :触发器的创建与使用
2017-12-02 19:47
288 查看
接上篇博客的内容,触发器可以看作是一个特殊的存储过程。本篇博客主要关注DML和DDL触发器对应的使用方法。
1.触发器的定义触发器的定义如下图。它与存储过程的区别在于触发器是被动调用的 ,即在满足特定事件的情况下被执行,而存储过程是在使用操作语句时主动进行调用。
![](https://img-blog.csdn.net/20171202194019531?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvczEzMTRfSkhD/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
触发器大致分为两种:DDL触发器和DML触发器,相对应的具体定义如下。
![](https://img-blog.csdn.net/20171202194033170?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvczEzMTRfSkhD/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2.创建触发器2.1创建INSERT触发器INSERT触发器是DML触发器的一种,其语法格式如下。
![](https://img-blog.csdn.net/20171202194041717?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvczEzMTRfSkhD/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
以AdventureWorks2012中的Sales.Currency表为例,新建一个INSERT触发器。新建查询中输入
即可新建一个INSERT触发器之后对该表进行数据添加。添加与删除SQL数据可参考 插入与修改SQL数据在新建查询中输入
即可
2.2DELETE触发器同理,在对数据表进行删除数据时,可以使用DELETE触发器,在删除数据后可以进行提示。仍以AdventureWorks2012中的Sales.Currency表为例,新建一个DELETE触发器。新建查询中输入
即可新建一个DELETE触发器,之后再进行数据的删除即可进行消息提示,新建查询中输入
即可
2.3 UPDATE触发器UPDATE可以看作是INSERT触发器与DELETE触发器的结合,在使用UPDATE时先进行DELETE,再进行INSERT在新建查询中输入
即可创建UPDATE触发器此时将无法修改CurrencyCode列,在新建查询中输入
将会报错,如下图所示
![](https://img-blog.csdn.net/20171202194226287?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvczEzMTRfSkhD/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
3. DLL触发器上述的DML触发器是针对具体语句的触发器,而DLL触发器则是针对数据表级别的创建和修改设立的触发器种类,其语法格式如下。
![](https://img-blog.csdn.net/20171202194236141?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvczEzMTRfSkhD/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
新建查询中输入
即可创建一个DLL触发器,之后对AdventureWorks2012中的表进行删除时将会报错。
嵌套触发器和递归触发器在视频中未作过多讲解,之后的项目设计中若有涉及,将会进行更新!
1.触发器的定义触发器的定义如下图。它与存储过程的区别在于触发器是被动调用的 ,即在满足特定事件的情况下被执行,而存储过程是在使用操作语句时主动进行调用。
触发器大致分为两种:DDL触发器和DML触发器,相对应的具体定义如下。
2.创建触发器2.1创建INSERT触发器INSERT触发器是DML触发器的一种,其语法格式如下。
以AdventureWorks2012中的Sales.Currency表为例,新建一个INSERT触发器。新建查询中输入
create trigger T_addCurrencyNum on Sales.Currency --在Sales.Currency表中新建触发器 for insert --规定触发器种类为INSERT as update Sales.CurrencyRate set ModifiedDate=ModifiedDate+1 --在Currency表修改后,与该表相关的CurrencyRate表中ModifiedDate值加一
即可新建一个INSERT触发器之后对该表进行数据添加。添加与删除SQL数据可参考 插入与修改SQL数据在新建查询中输入
create trigger T_addCurrencyNum on Sales.Currency --在Sales.Currency表中新建触发器 for insert --规定触发器种类为INSERT as update Sales.CurrencyRate set ModifiedDate=ModifiedDate+1 --在Currency表修改后,与该表相关的CurrencyRate表中ModifiedDate值加一
即可
2.2DELETE触发器同理,在对数据表进行删除数据时,可以使用DELETE触发器,在删除数据后可以进行提示。仍以AdventureWorks2012中的Sales.Currency表为例,新建一个DELETE触发器。新建查询中输入
create trigger T_deleteName on Sales.Currency for delete as select Name from deleted --deleted是一个临时表,用以存储删除的数据
即可新建一个DELETE触发器,之后再进行数据的删除即可进行消息提示,新建查询中输入
delete from Sales.Currency where Name='CN' --提示删除‘CN’
即可
2.3 UPDATE触发器UPDATE可以看作是INSERT触发器与DELETE触发器的结合,在使用UPDATE时先进行DELETE,再进行INSERT在新建查询中输入
create trigger T_updateCode on Sales.Currency for update as if(update(CurrencyCode)) --如果对表CurrencyCode进行修改 begin print 'you can not modify the CurrencyCode!' rollback transaction --回滚操作,即对执行失败的语句进行撤销,返回原表 end else print 'success!'
即可创建UPDATE触发器此时将无法修改CurrencyCode列,在新建查询中输入
update Sales.Currency set CurrencyCode='SYJ' where Name='Kroon'
将会报错,如下图所示
3. DLL触发器上述的DML触发器是针对具体语句的触发器,而DLL触发器则是针对数据表级别的创建和修改设立的触发器种类,其语法格式如下。
新建查询中输入
create trigger T_modTable on database --数据表级别 for drop_table,alter_table --不允许drop,alter as print 'you can not modify the database!' rollback
即可创建一个DLL触发器,之后对AdventureWorks2012中的表进行删除时将会报错。
嵌套触发器和递归触发器在视频中未作过多讲解,之后的项目设计中若有涉及,将会进行更新!
相关文章推荐
- MySQL学习笔记--触发器的创建与删除及使用注意事项
- C#学习笔记(十六):使用打开保存文件对话框
- 触发器的创建及使用(sqlserver 2000)
- 计算Java日期:学习怎样创建和使用日期
- Altiris安装配置学习教程(十一)- 使用新创建的任务 Push新机器
- SmartClient学习(四):使用多线程创建高响应智能客户端应用程序
- vi编辑器的学习使用(十六)
- 学习笔记:sql server 的触发器概念及使用(2)
- 触发器的创建及使用(sqlserver 2005)
- 创建触发器和使用示例
- Ext学习笔记一(使用Ext.Panel创建一个登录面板)
- JavaScript 学习_3.使用对象直接创建对象
- Smart Client学习笔记(7) 使用多线程创建高响应智能客户端应用程序
- 计算Java日期 学习怎样创建和使用日期
- mssql:t-sql;创建表;给表添加约束;使用变量;事务,索引,视图;存储过程;触发器trigger;播放器http://www.smartgz.com/blog/Article/956.asp
- 计算Java日期--学习怎样创建和使用日期
- 计算Java日期--学习怎样创建和使用日期(1)
- FlashCom学习第二课:创建一个使用视频的简单的Flash动画
- 学习笔记:sql server 的触发器概念及使用(1)
- C#学习笔记(十六):使用打开保存文件对话框