sql 增加 触发器

sql 增加 触发器,第1张

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语句

希望对你有帮助!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11371224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存