5

1つの列の値が次の列を超えることはできない表を作成しようとしています。たとえば、次の表を作成しています。1つの列の値が別の列の値より大きくなることはできません

CREATE TABLE Price (
    PriceID INT PRIMARY KEY IDENTITY (1,1), 
    OriginalPrice FLOAT NOT NULL, 
    CurrentPrice FLOAT NOT NULL, 
    Discount FLOAT, 
    ShippingCost FLOAT NOT NULL, 
    Tax FLOAT NOT NULL); 

現在価格はOriginalPrice以下である必要があります。

だから私がやってみましたこと

CurrentPrice FLOAT CHECK (CurrentPrice <= OriginalPrice) NOT NULL, 

だったが、これは私に次のエラーを与える:

Msg 8141, Level 16, State 0, Line 1 
Column CHECK constraint for column 'CurrentPrice' references another column, table 'Price'. 
Msg 1750, Level 16, State 0, Line 1 
Could not create constraint. See previous errors. 

私は同じテーブルで列を参照することは許されないのですか?

答えて

8

カラム制約の代わりにテーブルレベルの制約に変更するだけです。

CREATE TABLE Price (
    PriceID INT PRIMARY KEY IDENTITY (1,1), 
    OriginalPrice FLOAT NOT NULL, 
    CurrentPrice FLOAT NOT NULL, 
    Discount FLOAT, 
    ShippingCost FLOAT NOT NULL, 
    Tax FLOAT NOT NULL, 
    CHECK (CurrentPrice <= OriginalPrice)); 

ALTER TABLE Price ADD CHECK (CurrentPrice <= OriginalPrice); 
--or 
ALTER TABLE Price ADD CONSTRAINT CK_Price_Current_vs_Original 
    CHECK (CurrentPrice <= OriginalPrice); 
関連する問題