我是靠谱客的博主 明理老师,最近开发中收集的这篇文章主要介绍触发器的基本使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

EXISTS()在触发器中比较常用 用来判断有无返回查询的数据行 如果有 返回true 否则 false

有三种触发器 1.是for触发器
2.是after触发器: for触发器属于after触发器 所以基本上直接用after触发器就好了
3.before触发器
4.instead of触发器

after触发器后面可以跟insert,update,delete等简单的操作,意思就是说 当发生了insert,update,delete的sql语句后 就会触发事件 执行某个事件 接下来看一下实例;

两张表之间的联系:  当插入users表一条数据的时候  系统自动往insertRecord插入数据
create trigger
mytrigger
on Users
after insert     AFTER 指定触发器仅在触发 SQL 语句中指定的所有操作都已成功执行时才被触发
as
insert into InsertRecord(UserName,Age,Gender,[Address]) select UserName,Age,Gender,[Address] from inserted

insert into Users(UserName,Age,Gender,[Address]) values('关晓彤1','19','女','北京');             触发器在Users这里  所以执行这个操作才可以执行上面那个插入语句


这是当对 users进行更新的时候   会往UpdateRecord插入数据
create trigger
mytrigger1
on Users
after update
as
insert into UpdateRecord(UserName,Age,Gender,[Address]) select UserName,Age,Gender,[Address] from deleted;
这里为什么不用 values  因为  这是数据迁移  从一张表上迁移到另一张表 而values是插入数据里面放的是数据  而  select存放的是字段
//字段和关键字重名要用[]括起来   不然会报错

update Users set Age=20 where UserName='关晓彤';   insertupdate先后顺序不要紧
instead of触发器:

create trigger
mytrigger2
on Users
instead of insert
as
if
datename(week,getdate()) in ('星期六','星期天') or (datepart(hour,getdate()) not  between 9 and 15)              //datename是函数返回 某一结果 getdate()返回字符串
begin
print '非工作时间,不允许插入数据';
rollback;
end

insert into Users (UserName,Gender) values('张三丰','男');

alter table Users enable trigger mytrigger;        //enable是启用    名叫mytrigger的触发器 
DISABLE则相反

总结:
1.after insert等 意思就是说在执行after操作后 执行指定的操作
2.before insert等 意思实在执行insert操作之前执行操作 比如删除主键的前提要先删除对应的外键,所以得用before触发器
3.instead of触发器是包涵判断条件的。
4.INSTEAD OF 触发器用来代替通常的触发动作,即当对表进行INSERT、UPDATE 或 DELETE 操作时,系统不是直接对表执行这些操作,而是把操作内容交给触发器,让触发器检查所进行的操作是否正确。如正确才进行相应的操作。
5. 每一个表上只能创建一个 INSTEAD OF 触发器,但可以创建多个 AFTER 触发器。
6. Instead Of 触发器可以进行以下操作:
• 忽略批处理中的某些部分。
•不处理批处理中的某些部分并记录有问题的行。
•如果遇到错误情况则采取备用操作。

最后

以上就是明理老师为你收集整理的触发器的基本使用的全部内容,希望文章能够帮你解决触发器的基本使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部