drop TRIGGER if EXISTS insert_data
create trigger insert_data
after INSERT on a
for each ROW
BEGIN
insert into b select * from a order by id desc limit 1
end
a表的id设置自增,每次插入数据的时候获取a表最新一条id,插入到B表,亲测有效
---创建测试表:Create Table MyTest(
id int identity(1,1) not null primary key,
[name] varchar(100) null
)
--创建触发器:
CREATE TRIGGER trigtest--创建触发器trigtest
ON mytest--在表mytest上建
for INSERT,DELETE,UPDATE--为插入,删除,修改
AS
BEGIN
declare @a int,
@b int,
@id int,
@name varchar(100),
@oldId int,--原ID号
@oldName varchar(100)--原来的name
set @a=0
set @b=0
if exists(select * from inserted)--如果存在插入新的数据则设置@a=1
begin
set @a=1
end
if exists(select * from deleted)--如果存在删除数据则设置@b=1
begin
set @b=1
end
if (@a=1)and(@b=0)--新增:当插入表inserted存在数据而删除表deleted不存数据时,为新增 *** 作。
begin
select @id=id,@name=name from inserted
print '增加了ID号为【'+cast(@id as varchar(5))+'】Name为【'+@name+'】的数据!'
end
if (@a=1)and(@b=1)--修改:当插入表insertedt和删除表deleted都存在数据时,为修改 *** 作。
begin
select @id=id,@name=name from inserted
select @id=id,@oldname=name from deleted
print '修改了ID号为【'+cast(@id as varchar(5))+'】的数据Name由【'+@oldname+'】变为【'+@name+'】'
end
if (@a=0)and(@b=1)--删除:当插入表inserted不存在数据而删除表deleted存在数据时,为删除 *** 作。
begin
select @id=id,@name=name from deleted
print '删除了ID号为【'+cast(@id as varchar(5))+'】Name为【'+@name+'】的数据!'
end
END
创建触发器:Create
Trigger
名称
On
表名
For
类型
As
Sql语句
希望对你有帮助!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)