CREATE TABLE my_table*
(a int NULL, b int NULL)
GOCREATE TRIGGER my_trig
ON my_table
FOR INSERT,UPDATE
AS
IF UPDATE(b)
   PRINT 'Column b Modified'
GO
INSERT INTO MY_TABLE(A) VALUES(2) 
-----------------------------------------------
为什么插入A也会 PRINT 'Column b Modified' 呢? 
我想判断B列在INSERT后是否有值插入,有什么办法实现???
谢谢!

解决方案 »

  1.   

    insert时, 所有的列的update都返回true
      

  2.   

    -- 可以这样, 增加触发的是否update操作的判断CREATE TRIGGER my_trig
    ON my_table
    FOR INSERT,UPDATE
    AS
    IF UPDATE(b) and exists(select * from deleted)
       PRINT 'Column b Modified'
    GO
      

  3.   

    建议楼主单独写个UPDATE触发器,效率可能更高些:
    CREATE TRIGGER my_trig
    ON my_table
    FOR UPDATE
    AS
    IF UPDATE(b)
       PRINT 'Column b Modified'
    GO
      

  4.   

    zjcxc(邹建) ( ) 信誉:673  2006-6-21 20:12:33  得分: 6  
     
     
       
    -- 可以这样, 增加触发的是否update操作的判断CREATE TRIGGER my_trig
    ON my_table
    FOR INSERT,UPDATE
    AS
    IF UPDATE(b) and exists(select * from deleted)
       PRINT 'Column b Modified'
    GO  
     
    -----------------------------------------看不懂哦,好像insert哪列都不出现了!