5

한 열의 값이 다음 열을 초과 할 수없는 테이블을 만들려고합니다. 예를 들어 다음 표를 생성합니다.한 열의 값은 다른 열의 값보다 클 수 없습니다.

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. 

내가 같은 테이블에 열을 참조 할 수 없습니다 오전?

답변

8

열 제한 조건 대신 테이블 수준 제약 조건으로 변경하십시오.

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); 
관련 문제