首先申明用触发器可能会出现重复号码的情况,必须有办法限制。
create trigger tr_test_insert
on test
for insert
as
if (select count(*) from inserted )>1 returndeclare @date varchar(12)
select @date=convert(varchar(12),getdate(),112)if exists (select * from test where xh like @date+'%')
begin
update test
set xh=@date+right('000'+cast(cast((select right(max(xh),4) from test where xh like @date+'%') as int)+1 as varchar(4)),4)
from test,inserted
where test.key=inserted.keyend
else
update test
set xh=@date+'0001'
from test,inserted
where test.key=inserted.key

解决方案 »

  1.   

    刚才试了一下,说在关键字'key'附近出现错误
    我也看不懂这个key是什么意思,是另外加的一个字段吗
      

  2.   

    KEY 是识别记录唯一的标志。
      

  3.   

    我这有一个,不要KEY的,不过你每次INSTERT的时候,要让XH=‘99999’create trigger addxh on tablename
    for insert
    as
    begin
    declare @xh varchar(12) 
    if exists 
    (select 1 from tablename where left(xh,8)=convert(varchar(8),getdate(),112))
    begin
    select @xh=max(right(xh,4)) from tablename where left(xh,8)=convert(varchar(8),getdate(),112)
    set @xh=convert(varchar(8),getdate(),112)+right('000'+cast(cast(@xh as int)+1 as varchar(4)),4)
    end
    else
    begin
    set @xh=convert(varchar(8),getdate(),112)+'0001'
    end
    update tablename set xh=@xh where xh='99999'
    end语句:
    insert tablename ('99999',........)