触发器定义以及调用和条件
触发器是一个特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。
触发器条件分三种 insert(增加记录), update(修改记录), delete(删除记录)
触发器不能主动调用,只能时在数据库执行sql语句时被数据库自动调用
instead of 在sql语句执行前触发,sql语句不会正常执行,比如要执行insert操作,需要在instead of 中写insert语句,不然你会发现,插入语句不管用了
创建触发器
创建触发器的语法
create trigger [触发器名称]
on [表名]
[for | after | instead of] [insert,update,delete]
as
go
创建触发器案例
create trigger trigger_GroupBy
on GroupBy
instead of insert
as
declare @GNo varchar(32), @GName nvarchar(32), @GroupName nvarchar(32), @SimpleCode varchar(24)
select @GNo=GNo,@GName=GName,@GroupName=GroupName,@SimpleCode=SimpleCode from inserted
if @GNo = ''
begin
select @GNo=ID from GroupBy
if @GNo = null
select @GNo = '0'
select @GNo = convert(varchar(32),(convert(int,@GNo) + 1))
end
insert into GroupBy(GNo, GName,GroupName,SimpleCode) values(@GNo, @GName, @GroupName, @SimpleCode)
set nocount off -- 打开受影响行数
go
查看触发器
select * from sysobjects where xtype = 'TR' -- 查看数据库中所有的触发器
exec sp_helptext '触发器名称' -- 查看触发器代码
修改触发器
修改触发器使用alter 关键字,直接将create 换成 alter就行
alter trigger [触发器名称]
on [表名]
[for | instead of | after] [insert,update,delete]
as
<-- 代码块 -->
go
删除触发器
删除触发器使用 drop 关键字
drop trigger [触发器名称]