自动生成字符的SQL标识
我有下表:使用SQL Server自动生成字符的SQL标识,sql,sql-server,Sql,Sql Server,我有下表:使用SQL Server create table PoojaDetails ( PoojaDetailsID int identity constraint pk_PoojaDetailsID Primary Key, ReceiptNo AS 'PB' + '/' + datepart(yy,getdate()) + '/' + RIGHT('000000' + CAST(PoojaDetailsID AS VARCHAR(10)), 6) PERSISTED,
create table PoojaDetails
(
PoojaDetailsID int identity constraint pk_PoojaDetailsID Primary Key,
ReceiptNo AS 'PB' + '/' + datepart(yy,getdate()) + '/' + RIGHT('000000' + CAST(PoojaDetailsID AS VARCHAR(10)), 6) PERSISTED,
ReceiptDate datetime not null constraint df_ReceiptDate default getdate(),
FirstName varchar(100) not null,
LastName varchar(100) not null,
TelNo bigint
)
执行查询时:无法持久化表“PoojaDetails”中的计算列“ReceiptNo”,因为该列是非确定性的
我希望收据编号为:PB/年/号
例如:;PB/13/213433
有什么想法吗???感谢您的时间如果您可以依赖于始终由其默认约束填充且从不更改的ReceiptDate,那么您可以使用它来代替计算列中的getdate():
create table PoojaDetails
(
PoojaDetailsID int identity constraint pk_PoojaDetailsID Primary Key,
ReceiptNo AS 'PB' + '/' + CONVERT(varchar(5),datepart(yy,ReceiptDate)) + '/' + RIGHT('000000' + CAST(PoojaDetailsID AS VARCHAR(10)), 6) PERSISTED,
ReceiptDate datetime not null constraint df_ReceiptDate default getdate(),
FirstName varchar(100) not null,
LastName varchar(100) not null,
TelNo bigint
)
请试一试
create table PoojaDetails
(
PoojaDetailsID int identity constraint pk_PoojaDetailsID Primary Key,
ReceiptNo AS 'PB' + '/' + cast(datepart(yy,getdate()) as varchar(25)) + '/' + RIGHT('000000' + CAST(PoojaDetailsID AS VARCHAR(10)), 6) ,
ReceiptDate datetime not null constraint df_ReceiptDate default getdate(),
FirstName varchar(100) not null,
LastName varchar(100) not null,
TelNo bigint
)
亲爱的Damien_,不相信此查询的人已成功开始创建,但当我们执行select查询时,它给出了错误它给出了错误----将varchar值“PB/”转换为数据类型int时转换失败。不,当调用
getdate()
时,它不能持久化。