主题:sql server 2000中关于流水号自动生成的问题
在书上看的,源例没有问题,下面是我仿写的:
Create function primarykey()
returns varchar(25)
as
begin
declare @c varchar(25)
select @c='AA-'+'bb-'+right(10001+Min(bb),4)
from(select bb=right(aa,4)from cc with(xlock,paglock)
union all select 0)
a where not exists(select * from cc with(xlock,paglock)
where aa='AA-'+'bb-'+right(10001+a.bb,4)
)
return (@c)
end
go
--datename(yy,getdate())+'-'+datename(mm,getdate())+'-'+datename(dd,getdate())
Create table cc
(
aa char(25)primary key default dbo.primarykey(),--编号包括公司编号AA,部门编号bb,年,月,日
b int
)
insert into cc(b) values(1)
现在的问题是只插入了一行
插入第二行的时候:
[color=0000FF]服务器: 消息 515,级别 16,状态 2,行 1
无法将 NULL 值插入列 'aa',表 'SPeedy.dbo.cc';该列不允许空值。INSERT 失败。
语句已终止。[/color]
那条插入的一行也可以查询出来
源例:
Create function kuo()
returns char(8)
as
begin
declare @r char(8)
select @r='BH'+right(1000001+MIN(BH),6)--------------------------
from (select BH=right(BH,6) from jike with(xlock,paglock)
union all select 0)
a where not exists(select * from jike with(xlock,paglock)
where BH='BH'+right(1000001+a.BH,6)
)
return (@r)
end
go
Create table jike(
BH char(8) primary key default dbo.kuo(),
col int
)
实在想不出为什么会这样
Create function primarykey()
returns varchar(25)
as
begin
declare @c varchar(25)
select @c='AA-'+'bb-'+right(10001+Min(bb),4)
from(select bb=right(aa,4)from cc with(xlock,paglock)
union all select 0)
a where not exists(select * from cc with(xlock,paglock)
where aa='AA-'+'bb-'+right(10001+a.bb,4)
)
return (@c)
end
go
--datename(yy,getdate())+'-'+datename(mm,getdate())+'-'+datename(dd,getdate())
Create table cc
(
aa char(25)primary key default dbo.primarykey(),--编号包括公司编号AA,部门编号bb,年,月,日
b int
)
insert into cc(b) values(1)
现在的问题是只插入了一行
插入第二行的时候:
[color=0000FF]服务器: 消息 515,级别 16,状态 2,行 1
无法将 NULL 值插入列 'aa',表 'SPeedy.dbo.cc';该列不允许空值。INSERT 失败。
语句已终止。[/color]
那条插入的一行也可以查询出来
源例:
Create function kuo()
returns char(8)
as
begin
declare @r char(8)
select @r='BH'+right(1000001+MIN(BH),6)--------------------------
from (select BH=right(BH,6) from jike with(xlock,paglock)
union all select 0)
a where not exists(select * from jike with(xlock,paglock)
where BH='BH'+right(1000001+a.BH,6)
)
return (@r)
end
go
Create table jike(
BH char(8) primary key default dbo.kuo(),
col int
)
实在想不出为什么会这样