首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求教高手指教一个触发器如何写

2012-05-20 
求教高手指教一个触发器怎么写?请教高手,我现在要实现这么一个功能:表1:有字段 name1,name2.就是记录两个

求教高手指教一个触发器怎么写?
请教高手,我现在要实现这么一个功能:

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

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

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


求教高手,能写源码最好,不能,也请告诉下思路或流程。

[解决办法]

SQL code
create tr_ins_tab1 on tab1after insertasbegin    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
[解决办法]
SQL code
CREATE TRIGGER trg_testON 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
[解决办法]
探讨
请教高手,我现在要实现这么一个功能:

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

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

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


……

[解决办法]
SQL code
goif object_id('tri_test')is not nulldrop trigger tri_testgocreate trigger tri_test on 表1for insertasif exists(select 1 from inserted i where not exists(select 1 from t2 t where t.name1=i.name and t.name2=i.name2))beginupdate t2 set times=times+1where name1 in(select name1 from inserted)and name2 in(select name2 from inserted)end 

热点排行
Bad Request.