CREATE TRIGGER [addItemIntoContentStateWhencurrentPlaceOrDestinationChange] ON dbo.contentDetailTable 
FOR UPDATE, INSERT
AS 
Declare @ID varchar (50)if update(ID)
begin
UPDATE contentDetailTable set contentDetailTable.IDnumber = contentDetailTable.IDnumber +1
end我想实现这样的效果:当一条记录的ID改变时,那条记录的IDnumber自加1
但当一个ID改变后所有记录的IDnumber都加了1
请问该怎么办

解决方案 »

  1.   

    CREATE TRIGGER [addItemIntoContentStateWhencurrentPlaceOrDestinationChange] ON dbo.contentDetailTable 
    FOR UPDATE, INSERT
    AS 
    if update(ID)
    begin
    UPDATE A set A.IDnumber = A.IDnumber +1 From contentDetailTable Inner Join Inserted B On A.ID = B.ID
    end
    GO
      

  2.   

    fcuandy(开始新的生活) ( ) 信誉:100  2007-07-26 17:54:07  得分: 0  
     
     
       鱼掉了个别名,hehe
      
     
    -------------
    修改下。 :)CREATE TRIGGER [addItemIntoContentStateWhencurrentPlaceOrDestinationChange] ON dbo.contentDetailTable 
    FOR UPDATE, INSERT
    AS 
    if update(ID)
    begin
    UPDATE A set A.IDnumber = A.IDnumber + 1 From contentDetailTable A Inner Join Inserted B On A.ID = B.ID
    end
    GO
      

  3.   

    不要意思,old是db2中使用的你看看与触发器有关的两个表 inserted 和 deleted其实你就是要加一个更新条件,只有发生变量的那天记录才被你更新
      

  4.   

    0000000009() ( ) 信誉:98  2007-07-26 17:58:48  得分: 0  
     
     
       谢谢,麻烦问一下,这样是不是等于把表复制了一遍,如果表中的记录有很多,比如1亿条
    那效率是不是会很低?
      
     
    --------
    inserted中存儲的是你更新後的數據,兩表關聯,就只會更新你已經被更新的數據。