0
我正在使用SQL Server 2008 R2。每當有新客戶註冊時,我都想創建一個自動生成的客戶ID。客戶ID應採用以下格式如何使計算列成爲持久的列?
Customer ID =
current year (4 digit) +
current month (2 digit) +
unique number (4 digit).
例子:2012055001
我寫了一個查詢,如下所示:
create table tb
(
id int identity(1000, 1),
cust_id as CONVERT(VARCHAR(4), DATEPART(YYYY, GETDATE())) +
SUBSTRING(CONVERT(nvarchar(6), GETDATE(), 112), 5, 2) +
CONVERT(VARCHAR(4), id) persisted primary key
);
但我發現了以下錯誤:
Computed column 'cust_id' in table 'tb' cannot be persisted because the column is non-deterministic.
我該如何解決這個問題?
'GETDATE'是非確定性的,因此您不能在此上下文中使用它。所以,這是@KenWhite建議的觸發器,還是在插入之前在變量中構造值。 –
@KenWhite你應該做出答案。 – DeanOC
當您在一個月內獲得1,0001個新客戶時會發生什麼?不要這樣做。您的內部客戶ID應該是一個身份,然後按照您所描述的方式生成您的「視覺」客戶號碼。 –