create trigger trgname on students
instead of update
as 
  update a 
set a.id=(case when isnull(b.id,'')='' then c.id else b.id end),
a.name=b.id,
a.address=b.address
from students a full join inserted b on a.id=b.id
join deleted c on a.id=c.id

解决方案 »

  1.   

    CREATE TRIGGER [XXXXX] ON [dbo].[XXXXX] 
    FOR UPDATE
    AS
     
     if update(不能更新的字段)
     begin
           
           update XXXX
           set XXXXX.不能更新的字段=deleted.不能更新的字段
           from XXXX,deleted
           where XXXX.Id=deleted.Id
                   
     end
      

  2.   

    create trigger name on strudents
    instead of update
    as
    update students set id='',address='北京路' where name='李明'
    if(select id from inserted where name='李明')=''
    begin
          update students set id=(select id from deleted where name='李明') where name='李明'
    end
      

  3.   

    CREATE TRIGGER [XXXXX] ON [dbo].[XXXXX] 
    FOR UPDATE
    AS
     
     if update(不能更新的字段)
     begin
           rollback tran   --回滚掉事务就行了
                  
     end