我想为其自定义ID列创建一个包含计算列的表。这是我想要的格式是BID(The Year)-0000
例如一个这样的:表'Books'中的计算列'BookID'无法保留,因为该列是非确定性的
BID2017-0001
我尝试了下面的T-SQL代码,但我得到的非确定性错误。我怎么解决这个问题?
CREATE TABLE Books
(ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
BookID AS 'BID'+CAST(YEAR(GETDATE()) as VARCHAR(4))+ RIGHT ('0000' + CAST(ID AS VARCHAR(4)), 4) PERSISTED UNIQUE,
ISBN VARCHAR(32),
BookName NVARCHAR(50),
AuthorName NVARCHAR(50),
BLanguage VARCHAR(50),
StaId int,
StuId int,
CatNo int);
我也试过这篇文章,但无法解决问题。 non-deterministic
UPDATE 此外,我需要的一系列'0000'
要重置回'0000'
新的一年开始的时候。例如,2017年的最后一个ID是'BID2017-0932',当年更改为2018年时我想将ID中的零系列重置为'0000'
,例如'BID2018-0001'
我该如何实现这一目标?
不应它是'的BookID:
然后我想补充从而计算列VARCHAR(12)'然后当你填充表时使用你的字符串构造? – RealCheeseLord
这不是问题。问题在于导致错误的getdate()函数。 –
所以明年......你想让所有的ID都打勾吗?我对此表示怀疑。在创建记录时,将年份写入记录中的一列。然后,您可以创建该_fixed_(即确定性)值的计算列。 –