3

MS SQL 2008 R2 を使用しています。特定の列に CHECK を含むテーブルを作成する必要がありますが、このエラーが発生します。正しい方向に私を指摘していただけますか?ありがとう

HeatingSystem   tinyint             NOT NULL
    CONSTRAINT  CK_ReProperties_HeatingSystem   CHECK(Size between 0 and 3),

エラー

メッセージ 8141、レベル 16、状態 0、行 1 列 'HeatingSystem' の列 CHECK 制約は、別の列、テーブル 'ReProperties' を参照しています。メッセージ 1750、レベル 16、状態 0、行 1 制約を作成できませんでした。以前のエラーを参照してください。

4

6 に答える 6

13

列レベルでインラインで定義された制約は、次に定義されている列のみを参照できます。

制約定義を正しい列の隣に移動するか、制約定義を表定義の最後に移動してください。

失敗する

CREATE TABLE HeatingSystem
(
Size INT,
HeatingSystem TINYINT CHECK(Size between 0 and 3)
)

成功する

CREATE TABLE HeatingSystem
(
Size INT CHECK(Size between 0 and 3),
HeatingSystem TINYINT
)   

また成功する

CREATE TABLE HeatingSystem
(
Size INT ,
HeatingSystem TINYINT,
CHECK(Size between 0 and 3 AND HeatingSystem BETWEEN 1 AND 10)
)  

最後の方法では、複数の列を参照する行レベルの制約を宣言することもできます。

于 2012-06-25T07:09:26.703 に答える
0

ここで私がどのように解決したか。

HeatingSystem   tinyint             NOT NULL
    CONSTRAINT  CK_ReProperties_HeatingSystem   CHECK(HeatingSystem between 0 and 3),
于 2012-06-25T06:52:33.130 に答える
0

あなたのコメントでは、「サイズ」がどこから来ているのかわかりません...

作っていただけませんか

CONSTRAINT  CK_ReProperties_HeatingSystem   CHECK(HeatingSystem between 0 and 3)
于 2012-06-25T06:53:29.550 に答える
0

私はあなたのクエリを試しましたがInvalid column name 'Size'.、列名を書く必要があるため、エラーが発生していHeatingSystem ますsize。以下を使用してください: -

HeatingSystem   tinyint             NOT NULL
 CONSTRAINT  CK_ReProperties_HeatingSystem   CHECK(HeatingSystem between 0 and 3),
于 2012-06-25T06:59:04.960 に答える