触发器的基本使用

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

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 触发器可以进行以下操作:
• 忽略批处理中的某些部分。
•不处理批处理中的某些部分并记录有问题的行。
•如果遇到错误情况则采取备用操作。

目录
相关文章
|
2月前
|
存储 前端开发 JavaScript
简单实现一个事件触发器
简单实现一个事件触发器
31 0
|
4月前
|
存储 关系型数据库 MySQL
项目7总结:创建与使用触发器
项目7总结:创建与使用触发器
30 0
|
9月前
|
SQL 存储 安全
触发器简介
触发器是一个在修改指定表中的数据时执行的存储过程。经常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性或一致性,由于用户不能绕过触发器,所以可以用它来强制实施复杂的业务规则,以此确保数据的完整性。
71 0
Verilog语法入门(七)D触发器
Verilog HDL是一种硬件描述语言(HDL:Hardware Description Language),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL和VHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发。两种HDL均为IEEE标准。
241 0
|
开发者 Python
While 语句的基本使用 | 学习笔记
快速学习 While 语句的基本使用
127 0
While 语句的基本使用 | 学习笔记
|
SQL 存储 关系型数据库
第十章《触发器》
第十章《触发器》
|
存储 关系型数据库 MySQL
|
存储
触发器基础知识(上)
在数字电路中,需要具有记忆和存储功能的逻辑部件,触发器就是组成这类逻辑部件的基本单元。触发器都具备一下特点:
701 0
触发器基础知识(上)
|
芯片
触发器基础知识(下)
D触发器只有一个输入端,消除了输出的不定状态。D触发器具有置0、置1的逻辑功能,如图所示:
329 0
触发器基础知识(下)
|
芯片
触发器基础知识(中)
JK触发器是在同步RS触发器的基础上引入两条反馈线构成的。
526 0
触发器基础知识(中)