我试了一个: create trigger t1 on test for insert as begin declare @a varchar(10) if exists (select 1 from test where id<>'999') begin select @a=max(id) from test set @a=(case when right(@a,1)<>'z' then left(@a,2)+char(ascii(right(@a,1))+1) when substring(@a,2,1)<>'z'then left(@a,1)+char(ascii(substring(@a,2,1))+1)+'z' when left(@a,1)<>'z' then char(ascii(left(@a,1))+1)+'zz' else 'error' end) end else begin set @a='aaa' end update test set id=@a where id='999' end 因为是主键,不能为空,要输入一个固值’999‘ insert test values('999','2')
不过 id 的为 int 型
我就是想知道如何建立trigger
你在TRIGGER中要做的就是把identity计算成你所需要的值。
create trigger t1 on test
for insert
as
begin
declare @a varchar(10)
if exists (select 1 from test where id<>'999')
begin
select @a=max(id) from test
set @a=(case when right(@a,1)<>'z' then left(@a,2)+char(ascii(right(@a,1))+1)
when substring(@a,2,1)<>'z'then left(@a,1)+char(ascii(substring(@a,2,1))+1)+'z'
when left(@a,1)<>'z' then char(ascii(left(@a,1))+1)+'zz'
else 'error' end)
end
else
begin
set @a='aaa'
end
update test set id=@a where id='999'
end
因为是主键,不能为空,要输入一个固值’999‘
insert test values('999','2')