私はSQL Server 2008 R2を使用しています。新しい顧客が登録されるたびに、自動生成された顧客IDを作成したいと考えています。次のように2012055001
計算列を永続化する方法
私は、クエリを書かれている:顧客IDは例が
Customer ID =
current year (4 digit) +
current month (2 digit) +
unique number (4 digit).
次の形式である必要があり
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か月間に1,0001人の新規顧客を獲得したらどうなりますか?それをしないでください。内部テーブルの顧客IDはIDでなければならず、記述したように '視覚的な'顧客番号を生成することができます。 –