日期:2014-05-18  浏览次数:20542 次

求救啊,用触发器自动创建流水号,却无法定义主键
我的表是SQ_table{ID(自动增量,主键);sq_NO(通过触发器自动产生);name}
我的触发器代码如下
CREATE trigger add_sq_NO on dbo.SQ_table  
  INSTEAD OF insert  
  as  
  declare @id varchar(18),@id1 int,@head varchar(12)  
  select * into #tb from inserted  
  set @head='HB-'
  select @id=max(sq_NO) from SQ_table where sq_NO like @head+'%'  
  if @id is null  
  set @id1=0  
  else  
  set @id1=cast(substring(@id,13,3) as int)  
  update #tb set @id1=@id1+1  
  ,sq_NO=@head+right('000'+cast(@id1 as varchar),3)  
  insert into SQ_table select * from #tb

但是插入时提示下面错误
仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'SQ_table' 中为标识列指定显式值。
如果不设主键,删除id列,则可以产生流水号
请问有没有办法让自动增量id做主键啊,或者流水号sq_NO做主键也行


------解决方案--------------------
insert into SQ_table(sq_NO,name) select sq_NO,Name from #tb 

--不要对ID列进行插入..由系统生成.