table1表中有两列date1和date2,分别表示合同交货期和内部交货期,想实现仅在新插入数据时date2=date1,其他条件下不触发,语句如下:
create Trigger trigg-name
On table1                         
for insert                    
As                                       
begin
if exists(select 1 from inserted) and not exists(select 1 from deleted)
Update a 
Set a.date2 =b.date1 
From table1 a,inserted b
Where a.finterid=b.finterid 
end执行的结果是:不管是insert还是update,触发器均被触发,请问怎么修改?

解决方案 »

  1.   


    create Trigger trigg-name
    On table1  
    for insert  
    As  
    if exists(select 1 from inserted) and not exists(select 1 from deleted)
    begin
    Update a 
    Set a.date2 =b.date1 
    From table1 a,inserted b
    Where a.finterid=b.finterid 
    end
    --你的begin end位置放得有问题。应该是先判断什么操作,然执行对应的操作
      

  2.   


    create Trigger trigg-name
    On table1   
    for insert   
    As   
    begin
    Update a  
    Set a.date2 =b.date1  
    From table1 a,inserted b
    Where a.finterid=b.finterid  
    end
      

  3.   

    感觉很奇怪?insert触发器怎么会在update时触发呢?我做了测试没有这个问题啊CREATE TRIGGER tr_B
    ON A
    FOR  insert
    As   
    begin INSERT B
      (
        修改人
      )
    SELECT 'aaa'
            
    END
      

  4.   


    这个触发器只有insert时插入,更新不插入,跟楼主的语句差不多啊!
      

  5.   

    SQL version:SQL  2008 SP3
    按照2楼的语句测试结果:在insert 和update下均被触发。
      

  6.   

    在SQL下直接执行没有问题,在调用了这张表的应用程序下出现问题,可以结贴了。