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')
1.这个在你的程序中就可以判断着写啊,如果id3的值存在就update 表 set id2=id2+',D' where id3='DSD',不存在就直接插入 2.查询id2包含D的语句要改成select * from 表 where charindex(',D,',','+id2+',')>0
抱歉,上面的我没写清楚,再补充一下 就是事先并不知道插入的第4条字段ID3的值是什么,如果第四条记录ID3的值是和之前任何记录都不一样则新加一条记录:如 ID ID2 ID3 1 A DSD 2 B DDD 3 C AAS 4 D DSA
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
请问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(新增的记录)
update tb set id2 = id2 + ',D' where id3 = 'DSD'
else
insert into tb values(select max(id) + 1 from tb , 'D' , 'DSD')
2.查询id2包含D的语句要改成select * from 表 where charindex(',D,',','+id2+',')>0
就是事先并不知道插入的第4条字段ID3的值是什么,如果第四条记录ID3的值是和之前任何记录都不一样则新加一条记录:如
ID ID2 ID3
1 A DSD
2 B DDD
3 C AAS
4 D DSA
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
请问实现下面一个触发器该怎么写?
数据库,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(新增的记录)