Sql server 一列的值不能大于另一列的值

Sql server 一列的值不能大于另一列的值,sql-server,database-design,constraints,check-constraints,Sql Server,Database Design,Constraints,Check Constraints,我试图创建一个表,其中一列中的值不能大于上一列中的值。例如,我正在创建下表 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); 并

我试图创建一个表,其中一列中的值不能大于上一列中的值。例如,我正在创建下表

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,

不允许我引用同一表中的列吗?

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

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));
创建价格表(
PriceID INT主键标识(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,
    CHECK (CurrentPrice <= OriginalPrice));
ALTER TABLE Price ADD CHECK (CurrentPrice <= OriginalPrice);
--or
ALTER TABLE Price ADD CONSTRAINT CK_Price_Current_vs_Original
    CHECK (CurrentPrice <= OriginalPrice);