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