怎样自定义字符串型自增加字段?
实际需求:
job(工作表),其主键job_id为VarChar(11)
需要自定义为按下述方式自增加:
比如,今天为2000.02.18
从头一条记录起,job_id分别自增加为:
20000218001
20000218002
20000218003
20000218004
.
.
.
如果日期到了第二天2000.02.19,又自动依次增量产生为:
20000219001
20000219002
20000219003
20000219004
.
.
.
曾经用过如下方法:
create table job
(job_id varchar(11) default '00000000000'
constraint PK_job primary key clustered,
jobdscrpt varchar(50))
create trigger trg_autojobid on job for insert
as
declare @last_jobid varchar(11)
declare cur_findlast scroll cursor
for select job_id from job
open cur_findlast
fetch last from cur_findlast
into @last_jobid
close cur_findlast
deallocate cur_findlast
if (convert(varchar(11),getdate(),112)=substring(@last_jobid,1,8))
begin
update job
set job_id=
convert(varchar(11),getdate(),112)+
substring('000',1,3-datalength(convert(varchar(11),
convert(int,substring(@last_jobid,9,3))+1)))+
convert(varchar(11),convert(int,substring(@last_jobid,9,3))+1)
where job_id='00000000000'
end
else
begin
update job
set job_id=convert(varchar(11),getdate(),112)+'001'
where job_id='00000000000'
end
这种方法在纯SQL Server的环境中绝对没问题,但拿到BCB或Delphi的BDE连接下出错。
并且本身也太繁锁。
当然可以通过前台编程实现和解决——我最后也是通过前端编程做出来的。
但总贼心不死——要是直截在后端SQL中实现该多好呵!
不怕露丑,我这菜鸟现请教高手——
排除前端解决方案,不必拘泥于我的笨想法,请给出最佳方案!
回答请给出例子——我这人特笨!!!