/*把5位货号的普通商品的货号前面加8888*/
 SET QUOTED_IDENTIFIER OFF
 go 
 if exists(select 1
   from item a
  inner join item b on b.item_no = right('8888' + rtrim(a.item_no), 9) and len(rtrim(b.item_no)) = 9
  where len(rtrim(a.item_no)) = 5 and a.weight_flag='0'
 )
 begin
   print '不能搞,搞了货号会重复,重复商品如下:'
   select a.item_no, a.item_name, b.item_no, b.item_name
   from item a
  inner join item b on b.item_no = right('8888' + rtrim(a.item_no), 9) and len(rtrim(b.item_no)) = 9
  where len(rtrim(a.item_no)) = 5 and a.weight_flag='0'
   return
 end 
 declare @table_name varchar(50), @sql varchar(500)
 declare table_name_cursor cursor local fast_forward for
 select o.name
   from sysobjects o
   join syscolumns c on o.id=c.id and c.name='item_no' 
  where o.xtype='U' and o.name <> 'item' 
  order by o.name
 open table_name_cursor
 fetch next from table_name_cursor into @table_name
 while @@fetch_status=0
 begin
   set @sql='alter table '+@table_name+' disable trigger all' + char(13) + char(10)
   set @sql=@sql + "update x set item_no = '8888' + rtrim(x.item_no)  from "+@table_name+ " x inner join item bi on bi.item_no = x.item_no where len(rtrim(bi.item_no)) = 5   and bi.weight_flag = '0' " + char(13) + char(10)
   set @sql=@sql + 'alter table '+@table_name+' enable trigger all'
   execute(@sql)
 --  print @sql
   fetch next from table_name_cursor into @table_name
 end
 close table_name_cursor
 deallocate table_name_cursor 
 alter table item disable trigger all
 update x set item_son_no = right('8888' + rtrim(x.item_son_no), 9)
   from item x
  inner join item bi on bi.item_no = x.item_son_no
  where len(rtrim(bi.item_no)) = 5   and bi.weight_flag = '0' 
 update item set item_no= right('8888' + rtrim(item_no), 9)
  where len(rtrim(item.item_no)) = 5
    and item.weight_flag = '0'
 alter table item enable trigger all