2017-08-17 23 views
0

を作成することができ、私はこれを試してみてくださいしかし、ときに私は、profileIDを呼ばれる計算列を持つテーブルを作成しようとしています:SQL - のみUNIQUEまたはPRIMARY KEY制約が計算列に

CREATE TABLE Profiles 
(
    [id] [int] IDENTITY(1,1) NOT NULL, 
    [profileID] AS ((id * 19379 - 62327) % 99991) NOT NULL 
) 

しかし、私は後藤それを作成するときに私はこの

[profileID] as ((id * 19379 - 62327) % 99991) NOT NULL UNIQUE 

BにprofileIDをラインを調整しようとした

Only UNIQUE or PRIMARY KEY constraints can be created on computed columns, while CHECK, FOREIGN KEY, and NOT NULL constraints require that computed columns be persisted.

:、私はこのエラーを取得します私はまだ同じエラーが発生します。

私はidとそのプライマリキーと呼ばれる別の列を持っており、一意でauto_incrementedです。

+2

エラーメッセージは非常に明確である - あなただけ使用することができます一意のキー制約または主キー制約。永続化されない限り、 'not null'制約付きの計算カラムを作成することはできません。 しかし、あなたの計算ではハードコーディングされた値とnot nullの列に基づいているので、問題ではないはずです。その計算の結果は、とにかくnullにはなりません。 –

+0

「NOT NULL」を削除するか、計算カラムを永続化する必要があります。これは、エラーメッセージが本質的に言うものです。 –

+0

どうすればいいですか@ZoharPeled – user979331

答えて

2

エラーメッセージは非常に明確です - 計算カラムでは一意キー制約または主キー制約のみを使用できます。永続化されていない限り、非NULL制約付きの計算列を作成することはできません。

だから、どちらかpersistedとしてその列を作成します。

CREATE TABLE Profiles 
(
    [id] [int] IDENTITY(1,1) NOT NULL, 
    [profileID] as ((id * 19379 - 62327) % 99991) PERSISTED NOT NULL 
) 

それとも単にnot nullを削除する(とにかくnullにするつもりはありませんです)

CREATE TABLE Profiles 
(
    [id] [int] IDENTITY(1,1) NOT NULL, 
    [profileID] as ((id * 19379 - 62327) % 99991) 
) 
関連する問題