首页新闻找找看学习计划

insert后的触发器该怎么写

0
悬赏园豆:10 [已解决问题] 解决于 2012-12-19 16:03

这个表大概有这几个字段 id  roadName  roadCode。。。(均不为空)其中id是自增长的,roadCode是主键(nvarchar),我能获得的假如就只有roadName,我该怎么插入一条数据?并且得到有规律的roadCode

问题补充:

roadCode要和id对应,比如id=1,那么roadCode就应该是DL0001这种,您说的lock我不是很懂,用触发器怎么写呢?

sam.c的主页 sam.c | 初学一级 | 园豆:148
提问于:2012-12-19 14:26
< >
分享
最佳答案
0

create trigger InsertA
on A
after insert
as
 declare @id int, @RoadCode nvarchar(50)
 set @id=@@IDENTITY
 set @RoadCode= 'DL' + right('0000' + cast(@id as varchar),4)
 update A set RoadCode=@RoadCode where id=@id

收获园豆:10
Rich.T | 老鸟四级 |园豆:3438 | 2012-12-19 15:43
其他回答(2)
0

roadcode你就用一个静态的字段放在内存中,然后每次insert 之前都 lock住,按照规则修改你的code,然后插入数据

chenping2008 | 园豆:9836 (大侠五级) | 2012-12-19 14:41

roadCode要和id对应,比如id=1,那么roadCode就应该是DL0001这种,您说的lock我不是很懂,用触发器怎么写呢?

支持(0) 反对(0) sam.c | 园豆:148 (初学一级) | 2012-12-19 14:47
0

因为ID是自增列,可以select上一个ID+1即可。

insert into TableA (roadName,roadCode) select @roadname,('DL'+cast(select Max(Id)+1 from TableA) as varchar(10)))

happydaily | 园豆:544 (小虾三级) | 2012-12-19 16:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册