Значения одного столбца не могут быть больше другого
Я пытаюсь создать таблицу, в которой значения в одном столбце не могут быть больше, чем в следующем столбце. Например, я создаю следующую таблицу.
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);