SQLserver中的触发器,实现一个表的某字段修改后,另一张表的对应字段也修改
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLserver中的触发器,实现一个表的某字段修改后,另一张表的对应字段也修改相关的知识,希望对你有一定的参考价值。
有2个表a b,表a中的id字段值更改后,表b中的值也做相应修改
求 触发器
after insert or update or delete on test
begin
if updating then
dbms_output.put_line('修改');
elsif deleting then
dbms_output.put_line('删除');
elsif inserting then
dbms_output.put_line('插入');
end if;
end;本回答被提问者采纳
SqlServer 中的触发器
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中的触发器,实现一个表的某字段修改后,另一张表的对应字段也修改的主要内容,如果未能解决你的问题,请参考以下文章
SQLServer游标怎么用一个表的某一字段内容替换另一个表的字段内容啊
想写一个DB2触发器,几张表有关联,修改其中一张主表中的某一个字段,其他关联表中的该字段也跟着联动修改