The values of one column cannot be greater than another

14,444

Just change it to a table-level constraint instead of a column constraint.

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

You can also add it after, e.g.

ALTER TABLE Price ADD CHECK (CurrentPrice <= OriginalPrice);
--or
ALTER TABLE Price ADD CONSTRAINT CK_Price_Current_vs_Original
    CHECK (CurrentPrice <= OriginalPrice);
Share:
14,444
krikara
Author by

krikara

Updated on July 19, 2022

Comments

  • krikara
    krikara almost 2 years

    I am trying to create a table where the values in one column can't be greater than the next column over. For example, I am creating the following table.

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

    And Current Price cannot be greater than OriginalPrice.

    So what I tried doing was

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

    But this gives me the following error:

    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.
    

    Am I not allowed to reference a column in the same table?