请问实现下面一个触发器该怎么写?

suzsuzsuz 2007-11-13 05:42:03
请问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(新增的记录)
...全文
59 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
suzsuzsuz 2007-11-13
  • 打赏
  • 举报
回复
感谢!昨夜小楼,无枪的狙击手,还有roy_88 ,尤其感谢无枪的狙击手!呵呵~~按照无枪的狙击手提供的已经解决了!圆满结贴!
中国风 2007-11-13
  • 打赏
  • 举报
回复
create trigger T_insert on Ta
after insert
as
begin
update T
set ID3=(select top 1 ID3 from T where ID2=t.ID2 and ID3 is not null order by newID() )
from inserted i join ta t
on T.ID=i.ID
end
-狙击手- 2007-11-13
  • 打赏
  • 举报
回复
create table tb (id int identity(1,1),id2 char(2) ,id3 char(5))

insert tb select 'A','safs'
insert tb select 'B','dafs'
insert tb select 'C',Null
insert tb select 'C','ASS'





go
select * from tb
go
create trigger trigger_insert
on tb
for insert
as
begin
update a
set ID3=(select min(ID3) from tb where ID2=b.ID2)
from tb a
inner join INSERTED b on a.ID=b.ID
end

go
insert tb select 'C',null

select * from tb
/*

id id2 id3
----------- ---- -----
1 A safs
2 B dafs
3 C NULL
4 C ASS
5 C ASS
*/
drop table tb
Limpire 2007-11-13
  • 打赏
  • 举报
回复
update 表
set ID3=(select min(ID3) from 表 where ID2=b.ID2)
from 表 a
inner join INSERTED b on a.ID=b.ID

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧