SQL触发器

一 简介

    触发器是一种特殊的存储过程,在对表进行插入、更新、删除的时候会触发执行。触发器一般用在check约束或者一些后续事务逻辑的处理。触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作。诸如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。所以触发器可以用来实现对表实施复杂的完整性约束。

二 相关参数

    触发器触发的时候两个特殊的表:插入表(instered表)和删除表(deleted表)。这两张表的结构与被改触发器应用的表的结构相同,存储的数据是要进行操作的数据,当触发器完成工作后,这两张表就会被删除。Inserted表的数据是插入或是修改后的数据,而deleted表的数据是更新前的或是删除的数据。

 

 

三 Instead of 和 After触发器
  SQL Server2000提供了两种触发器:Instead of 和After 触发器。这两种触发器的差别在于他们被激活的同:
 Instead of触发器用于替代引起触发器执行的T-SQL语句。除表之外,Instead of 触发器也可以用于视图,用来扩展视图可以支持的更新操作。
 After触发器在一个Insert,Update或Deleted语句之后执行,进行约束检查等动作都在After触发器被激活之前发生。After触发器只能用于表。
 一个表或视图的每一个修改动作(insert,update和delete)都可以有一个instead of 触发器,一个表的每个修改动作都可以有多个After触发器。

四 触发器的添加,修改,删除,查看操作

4.1 添加创建语法

create trigger trigger_name
  on {table_name | view_name}
  {for | After | Instead of }
  [ insert, update,delete ]
  as
  sql_statement

4.2 修改语法

alter trigger trigger_name--类似于修改表结构

4.3 删除语法

drop trigger trigger_name

4.4 查看触发器

select * from sys.triggers

select * from sysobjects where xtype='TR'
---- 查看单个触发器
exec sp_helptext '触发器名'

五 触发器的简单实例

--1 创建触发器,触发添加内容

Create TRIGGER [dbo].[s1]
ON [dbo].[A]
FOR insert
as
DECLARE @id VARCHAR(50)
DECLARE @name varchar(50)
DECLARE @nos INT
SELECT @id=[ID] ,@name=a.Name,@nos=a.number FROM a AS a
INSERT INTO B
(
IC,
CName,
No
-- AID -- this column value is auto-generated
)
VALUES
(
@id,
@name,
@nos
)

---2删除内容,触发级联删除

Create trigger [dbo].[tri_deletemember]
on [dbo].[Member]
for delete
as
declare @ID VARCHAR(150)
select @ID=ID from deleted
delete from MemCount where ID=@ID
delete from MemMoney where @ID=@ID

原文地址:https://www.cnblogs.com/zoood/p/5773482.html