Значения одного столбца не могут быть больше другого

Я пытаюсь создать таблицу, в которой значения в одном столбце не могут быть больше, чем в следующем столбце. Например, я создаю следующую таблицу.

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.

Разве я не могу ссылаться на столбец в той же таблице?

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);
Другие вопросы по тегам