update tab1 set code=LEFT(code,1)+'1'+RIGHT(code,3)
 update tab2 set code=LEFT(code,1)+'1'+RIGHT(code,3)

解决方案 »

  1.   

    这里tb1是主表,tb2是附表,通过修改tb2的外键,选择update的“级联”就可以:最后需要保存一下,就可以实现你的需求了
      

  2.   

    这个是效果:--更新主表,不会报错
    update tb1
    set code  = left(code,2)+'1' + SUBSTRING(code,3,LEN(code))
    select * from tb1
    /*
    code
    1111
    2212
    3313
    */
    --虽然没有更新附表,但是级联更新
    select * from tb2
    /*
    code
    1111
    2212
    3313
    */
      

  3.   


    --设置外键约束  
      
    ALTER TABLE [dbo].[TestDetail]  WITH CHECK  
      
    ADD CONSTRAINT [FK_TestDetail_Test] FOREIGN KEY([TestID])  
      
    REFERENCES [dbo].[Test]([TestID])  
      
    ON  UPDATE CASCADE  --设置级联更新
      
    GO 
      

  4.   


    哦,这个级联更新,是针对,更新主表,那么自动更新附表的技术,但是不能倒过来,比如像你说的,如果更新附表,那么就会报错。对了,你用的是sql server 2005不
      

  5.   


    我刚才尝试用触发器,也实现不了。所以我觉得,能不能把update tb2的语句修改为update tb1的语句,比如下面的:update tb1
    set code  = left(code,1)+'1' + SUBSTRING(code,2,LEN(code))
    where tb1.code in (select code from tb2 where code ='要更新tb2的code')