我想爲其自定義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_(即確定性)值的計算列。 –