一列的值不能大于另一列

14

我正在尝试创建一个表格,其中一列的数值不能大于其旁边的下一列。例如,我正在创建以下表格。

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);

当前价格不能高于原价。

所以我尝试做的是

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.

我能否在同一张表格中引用一个列?

1个回答

21

将其更改为表级约束,而不是列级约束。

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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接