kri*_*ara 7 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);
Run Code Online (Sandbox Code Playgroud)
并且当前价格不能大于OriginalPrice.
所以我尝试做的是
CurrentPrice FLOAT CHECK (CurrentPrice <= OriginalPrice) NOT NULL,
Run Code Online (Sandbox Code Playgroud)
但这给了我以下错误:
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.
Run Code Online (Sandbox Code Playgroud)
我不允许引用同一个表中的列吗?
Ric*_*iwi 10
只需将其更改为表级约束而不是列约束.
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));
Run Code Online (Sandbox Code Playgroud)
您也可以在之后添加它,例如
ALTER TABLE Price ADD CHECK (CurrentPrice <= OriginalPrice);
--or
ALTER TABLE Price ADD CONSTRAINT CK_Price_Current_vs_Original
CHECK (CurrentPrice <= OriginalPrice);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9687 次 |
| 最近记录: |