求救啊,用触发器自动创建流水号,却无法定义主键
我的表是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列进行插入..由系统生成.