update tb
set id2 = id2 + ',D'
where id3 = 'DSD'

解决方案 »

  1.   

    if exists (select 1 from tb where id3 = 'DSD')
       update tb set id2 = id2 + ',D' where id3 = 'DSD'
    else 
       insert into tb values(select max(id) + 1 from tb , 'D' , 'DSD')
      

  2.   

    1.这个在你的程序中就可以判断着写啊,如果id3的值存在就update 表 set id2=id2+',D' where id3='DSD',不存在就直接插入
    2.查询id2包含D的语句要改成select * from 表 where charindex(',D,',','+id2+',')>0
      

  3.   

    抱歉,上面的我没写清楚,再补充一下
    就是事先并不知道插入的第4条字段ID3的值是什么,如果第四条记录ID3的值是和之前任何记录都不一样则新加一条记录:如
    ID     ID2       ID3 
    1         A         DSD 
    2         B         DDD 
    3         C         AAS 
    4         D         DSA
      

  4.   

    create trigger trig on tb
    instead of insert
    as
    begin
    select * into #T from inserted
        
    update tb set id2=id2+','+#T.id2
    from tb join #T on tb.id3 = #T.id3 --假定你的ID1是自增类型
    insert tb(ID2,ID3) select ID2,ID3 from #T
    where id3 not in (select id3 from tb) 
    end
      

  5.   

    请问8楼#T是什么意思亚?
    请问实现下面一个触发器该怎么写?
    数据库,ID1是自增类型:
    ID     ID2       ID3 
    1       A        DSD 
    2       B        DDD 
    3       C        AAS 
    4       C        AAS 
    5       C        NULL 
    6       C        AAS 现在我插入一条记录,ID2字段=C,那么找到一个同样ID2字段的值为C并且ID3字段不为UNLL的记录(可能会不只一条符合条件,但是只要随便选一个符合条件的即可),将这条记录中的ID3字段的值复制到新的记录中。效果如下:
    ID     ID2       ID3 
    1       A        DSD 
    2       B        DDD 
    3       C        AAS 
    4       C        AAS 
    5       C        NULL 
    6       C        AAS 
    7       C        AAS(新增的记录)