求教高手指教一个触发器怎么写?

hollin1988 2012-05-17 09:07:58
请教高手,我现在要实现这么一个功能:

表1:有字段 name1,name2.就是记录两个人名

表2:也是有字段name1,name2,times,那个times是指次数。

我想在表1里面写个触发器,当给表1插入新数据时候,判断一下,新数据里面的name1,name2在表2的name1,name2是否存在,如果存在,则原有times+1,如果没有,则 times = 1


求教高手,能写源码最好,不能,也请告诉下思路或流程。
...全文
108 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hollin1988 2012-05-17
  • 打赏
  • 举报
回复
非常感谢大家参与,散分结贴
  • 打赏
  • 举报
回复

go
if object_id('tri_test')is not null
drop trigger tri_test
go
create trigger tri_test on 表1
for insert
as
if exists(select 1 from inserted i where
not exists(select 1 from t2 t where t.name1=i.name and t.name2=i.name2))
begin
update t2 set times=times+1
where name1 in(select name1 from inserted)
and name2 in(select name2 from inserted)
end
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
请教高手,我现在要实现这么一个功能:

表1:有字段 name1,name2.就是记录两个人名

表2:也是有字段name1,name2,times,那个times是指次数。

我想在表1里面写个触发器,当给表1插入新数据时候,判断一下,新数据里面的name1,name2在表2的name1,name2是否存在,如果存在,则原有times+1,如果没有,则 times = 1


……
[/Quote]
create trigger t1
on 表1
for insert
as
begin
if exists(select 1 from 表2 t ,inserted where t.name1=inserted.name1 and t.name2 =inserted.name2)
begin
update 表2
set times=times+1
from 表2 t ,inserted where t.name1=inserted.name1 and t.name2 =inserted.name2
end
else
begin
insert into 表2
select name1,name2,o
from inserted
end
end
迪迦凹凸曼 2012-05-17
  • 打赏
  • 举报
回复

CREATE TRIGGER trg_test
ON tb1 FOR INSERT
AS
DECLARE @name1 VARCHAR(10),@name2 varchar(10)
SELECT @name1=name1,@name2=name2 FROM INSERTED
IF EXISTS(SELECT 1 FROM tb2 WHERE name1=@name1 AND name2=@name2)
BEGIN
UPDATE tb2 SET times=times+1 WHERE name1=@name1 AND name2=@name2
END
ELSE
BEGIN
INSERT INTO tb2(name1,name2,times) VALUES(@name1,@name2,1)
END
天-笑 2012-05-17
  • 打赏
  • 举报
回复


create trigger tr_ins_tab1 on tab1
after insert
as
begin

update tab2 set times = times +1
from tab2 a inner join inserted b on a.name1 = b.name1 and a.name2= b.name2

insert into tab2
select a.name1,a.name2,1 from inserted a where not exists
(select 1 from tab2 b where a.name1 = b.name1 and a.name2= b.name2)


end



天-笑 2012-05-17
  • 打赏
  • 举报
回复

create tr_ins_tab1 on tab1
after insert
as
begin

update tab2 set times = times +1
from tab2 a inner join inserted b on a.name1 = b.name1 and a.name2= b.name2

insert into tab2
select a.name1,a.name2,1 from inserted a where not exists (select 1 from tab2 b a.name1 = b.name1 and a.name2= b.name2
)

end


22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧