SQL Trigger怎么写?
发布网友
发布时间:2022-04-23 15:07
我来回答
共3个回答
懂视网
时间:2022-05-02 20:49
触发器TRIGGER 是一个被指定关联到一个表的数据库对象,当对一个表的特定事件出现时,它将被激活。
触发器是数据库响应 INSERT , UPDATE, DELITE 语句而自动执行的一条SQL语句(或位于BEGIN 和 END 语句之间的一组SQL语句)。
具体语法如下
SQL-2--TRIGGER
标签:数据库 数据库对象 事件 src 数据 sql语句 技术 特定 语法
热心网友
时间:2022-05-02 17:57
Table Name: TB_1,TB_2 (两个table 结构完全一样)
Create Table TB_1(ID Int, Name_1 varchar(20),Status varchar(20) ,Type Varchar(20))
Create Table TB_2(ID Int, Name_1 varchar(20),Status varchar(20) ,Type Varchar(20))
-- 为Tb_1创建Trigger, 当 TB_1 发生变化时,变化的信息(Insert ,Update,Delete)将保存于 TB_2 中,Update是两条记录,Update 之前和之后 都要保存盐类
Create trigger Trig_t2
On Tb_1
For Insert,Update,Delete
As
declare @id int,
@name_1 varchar(20),
@status varchar(20)
If not exists(Select 1 from deleted) ----Insert
Begin
select @id=id, @name_1=name_1,@status=status from inserted
insert into tb_2(id,name_1,status,type)values(@id,@name_1,@status,'Insert')
End
If exists(select 1 from inserted) and exists(select 1 from deleted) ---Update
Begin
/* Update Before */
select @id=id, @name_1=name_1,@status=status from deleted
insert into tb_2(id,name_1,status,type)values(@id,@name_1,@status,'UpdateBefor')
/* Update End */
select @id=id, @name_1=name_1,@status=status from inserted
insert into tb_2(id,name_1,status,type)values(@id,@name_1,@status,'UpdateEnd')
End
If not exists(select 1 from inserted) ---Delete
Begin
select @id=id, @name_1=name_1,@status=status from inserted
insert into tb_2(id,name_1,status,type)values(@id,@name_1,@status,'Delete')
End
----测试----
insert into tb_1(id,name_1,status)values('1','1','1')
select * from tb_1
select * from tb_2
id name_1 status type
----------- -------------------- -------------------- --------------------------------------------------
1 1 1 NULL
(1 row(s) affected)
id name_1 status type
----------- -------------------- -------------------- --------------------------------------------------
1 1 1 Insert
-----------测试Update---------------
update tb_1 set name_1='2'where id='1'
select * from tb_1
select * from tb_2
id name_1 status type
----------- -------------------- -------------------- --------------------------------------------------
1 2 1 NULL
(1 row(s) affected)
id name_1 status type
----------- -------------------- -------------------- --------------------------------------------------
1 1 1 Insert
1 1 1 UpdateBefor
1 2 1 UpdateEnd
热心网友
时间:2022-05-02 19:15
用插入触发器
要添加记录的设表名为thistable,要用触发器修改的另一个表为TABLE_OTHER,为叙述简便,设置其结构相同,都有三个字段,字段名为field1,field2,field3,
则通过下面的触发器,可以实现一个插入命令同时给两个表添加记录。
create trigger ins_triggername on thistable FOR insert
as
begin
DECLARE @FIELD1 VARCHAR(10),@FIELD2 INT,@FIELD3 FLOAT
SELECT @FIELD1=FIELD1,@FIELD2=FIELD2,@FIELD3=FIELD3 FROM INSERTED
INSERT INTO TABLE_OTHER SELECT @FIELD1,@FIELD2,@FIELD3
end
go