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

概述

基本概念

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

表操作Insert表Delete表
添加记录(insert)存放添加的记录
修改记录(update)存放更新后的记录存放更新前的记录
删除记录(delete)存放被删除的记录

 

 创建触发器

create trigger trigger_name on table_name
	for insert --update、delete
as
    --业务逻辑代码

测试数据

创建两张表,学生表(student)、年级表(grade),并插入数据

--学生表
if(exists (select * from sys.objects where name = 'student'))
	drop table student
go
create table student
(
	id int primary key identity(1001,1),
	stu_name varchar(10)--学生姓名
)

--年级表
if(exists (select * from sys.objects where name = 'grade'))
	drop table grade
go
create table grade
(
	id int primary key identity(1,1),
	s_id int not null,--学生id
	g_name varchar(10),--年级
	start_time time,--注册时间
)

--插入数据
insert into student 
	values('张三'),('李四'),('王五')

insert into grade
	values(1001,'一年级',GETDATE()),
	(1002,'二年级',GETDATE()),
	(1003,'三年级',GETDATE())

 Insert触发器

向学生表中添加学生信息,年级表中自动添加这位学生对应的信息,此时可以使用Insert触发器,代码如下:

if(exists(select * from sys.objects where name = 'trigger_insert'))
	drop trigger trigger_insert
go
create trigger trigger_insert on student
	for insert
as
	declare @stu_name varchar(10)
	select @stu_name = stu_name from inserted
	
	insert into grade 
		values((select id from student where stu_name = @stu_name),'一年级',GETDATE())
	print '学生信息录入成功'

--对表进行操作时,激活触发器
insert into student values('孙悟空')

Update触发器

修改学生表中学生信息,年级表注册时间更新,此时可以使用Update触发器,代码如下:

if(exists(select * from sys.objects where name = 'trigger_update'))
	drop trigger trigger_update
go
create trigger trigger_update on student
	for update
as
	declare @stu_id int
	select @stu_id = id from deleted
	
	update grade set start_time = GETDATE() 
		where s_id = @stu_id
	print '学生信息更新成功'

--对表进行操作时,激活触发器
update student set stu_name = '孙猴子' where id = 1004

Delete触发器

学生表中学生信息删除,年级表中该学生的年级信息自动删除,此时可以使用Delete触发器,代码如下:

if(exists(select * from sys.objects where name = 'trigger_delete'))
	drop trigger trigger_delete
go
create trigger trigger_delete on student
	for delete
as
	declare @stu_id int
	select @stu_id = id from deleted

	delete grade where s_id = @stu_id
	print '学生信息已删除'

--对表进行操作时,激活触发器
delete student where id = 1004

最后

以上就是俭朴萝莉为你收集整理的SQL Server触发器的使用的全部内容,希望文章能够帮你解决SQL Server触发器的使用所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部