IF EXISTS (SELECT name FROM sysobjects
      WHERE name = 'abc' AND type = 'TR')
   DROP TRIGGER abccreate trigger abc
on tablename1
for insert
declare @a varchar(50)
declare @b varchar(50)
declare @c varchar(50)
select @a=n.id,@b=n.字段1,@c=n.字段2 from tablename1 n inner join inserted m on n.id=m.id
if exists(select 1 from tablename2 where id=@a and @b-字段1>0 
              union all select 1 from tablename2 where id=@a and @c-字段2>0)
begin
insert into tablename1(id,字段1,字段2) values(@a,@b/2+'Y',@c/2+'Y')
end

解决方案 »

  1.   

    IF EXISTS (SELECT name FROM sysobjects
          WHERE name = 'abc' AND type = 'TR')
       DROP TRIGGER abc
    ---這裡上面和下面的分開執行
    --create table tablenme1 (id int primary key,a varchar(30),b varchar(30))
    ---create table tablename2(id int primary key,a varchar(30),b varchar(30))
    create trigger abc
    on  tablenme1
    for insert
    as
    --declare @a varchar(50)
    --declare @b varchar(50)
    --declare @c varchar(50)
    --select @a=n.id,@b=n.a,@c=n.b from tablename1 n inner join inserted m on n.id=m.id and n.a=m.a
    if exists(select * from tablename2 a,tablename1b where a. id=b.id and a.a>b.a )
       insert into tablename1(id,a,b)  select n.id,(n.b)/2+'(y)' as a,n.b  from tablename1 n inner join inserted m on n.id=m.id and n.a=m.a         
    else
     insert into tablename1(id,a,b)  select n.id,n.a,n.b from tablename1 n inner join inserted m on n.id=m.id and n.a=m.aif exists   (select * from tablename2 a,tablename1b where a. id=b.id and a.b>b.b )
    update tablename1 set b= b/2+'(y)' 
           ----你自己對照自己的表改改看--注意,字段名最好不要起數字
      

  2.   

    ---這裡上面和下面的分開執行
    --create table tablename1 (id int primary key,a varchar(30),b varchar(30))--上面tablename1
    ---create table tablename2(id int primary key,a varchar(30),b varchar(30))
    create trigger abc
    on  tablename1---上面把這裡字母搞錯了
    for insert
    as
    if exists(select * from tablename2 a,tablename1b where a. id=b.id and a.a>b.a )
       insert into tablename1(id,a,b)  select n.id,(n.b)/2+'(y)' as a,n.b  from tablename1 n inner join inserted m on n.id=m.id and n.a=m.a         
    else
     insert into tablename1(id,a,b)  select n.id,n.a,n.b from tablename1 n inner join inserted m on n.id=m.id and n.a=m.aif exists   (select * from tablename2 a,tablename1b where a. id=b.id and a.b>b.b )
    update tablename1 set b= b/2+'(y)' 
           ----你自己對照自己的表改改看--注意,字段名最好不要起數字