码迷,mamicode.com
首页 > 数据库 > 详细

SqlServer 中的触发器

时间:2019-01-28 16:42:21      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:into   表之间   删除   sans   之间   varchar   存储   多表   ble   

SqlServer 触发器实现多表之间同步增加、删除与更新

定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。
常见的触发器有三种:分别应用于Insert , Update , Delete 事件。

 

触发器的使用模版如下

 

CREATE TRIGGER 触发器名称 
ON 表名称
AFTER INSERT /UPDATE/DELETE
AS 

BEGIN INSERT INTO 
B表(B表字段1,B表字段2,B表字段3)
SELECT A表字段1,A表字段2,A表字段3 
FROM INSERTED/UPDATED/DELETED
END

 

  

 

 

新建两张表,如下,第一张是操作表,第二张表是为了测试触发器效果的

create table dbo.testtable(
id int identity (1,1),
name varchar(20))

create table dbo.htesttable(
id int identity (1,1),
name varchar(20),
timerecord datetime,
updatedt datetime)

 

新增的触发器

CREATE TRIGGER [DBO].[TRG_TESTTABLE_INSERT] ON [DBO].[TESTTABLE] AFTER INSERT AS
BEGIN

INSERT INTO HTESTTABLE 
SELECT I.NAME+‘INSERT‘ ,GETDATE(),GETDATE()
FROM INSERTED I 
    
END

  更新的触发器

CREATE   TRIGGER [DBO].[TRG_TESTTABLE_UPDATE] ON [DBO].[TESTTABLE] AFTER UPDATE AS
BEGIN

INSERT INTO HTESTTABLE 
SELECT U.NAME + ‘UPDATE‘,GETDATE(),GETDATE()
FROM UPDATED U 
    
END

 

删除的触发器

CREATE   TRIGGER [DBO].[TRG_TESTTABLE_DELETE] ON [DBO].[TESTTABLE] AFTER DELETE AS
BEGIN

INSERT INTO HTESTTABLE 
SELECT D.NAME + ‘DELETE‘,GETDATE(),GETDATE()
FROM DELETED D
    
END

  

如果需要对触发器重命名,只要记住触发器是特殊的存储过程即可,命令如下

exec sp_rename oldxxx, newxxx

SqlServer 中的触发器

标签:into   表之间   删除   sans   之间   varchar   存储   多表   ble   

原文地址:https://www.cnblogs.com/qianjinyan/p/10330717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!