2009-02-25 21 views
6

मैंएसक्यूएल में दो कॉलम के बीच चेक बाधा कैसे बनाएं?

CREATE TABLE bp (
    bpid  VARCHAR(5), 
     FOREIGN KEY (bpid) REFERENCES designation(desigid), 
    upperlimit DECIMAL(10,2) NOT NULL, 
    lowerlimit DECIMAL(10,2) NOT NULL, 
    increment DECIMAL(10,2) NOT NULL 
     CONSTRAINT llvalid CHECK (upperlimit > lowerlimit) 
); 

के साथ एक मूल वेतन (बीपी) तालिका बनाने के लिए आप अंत में, मैं अगर upperlimitlowerlimit से अधिक है जाँच करना चाहते हैं के पास देख सकते हैं कोशिश कर रहा हूँ, मैं यह कैसे कर सकते हैं?

उत्तर

6

यह संभवतः आपके द्वारा उपयोग किए जाने वाले डेटा बेस पर निर्भर करता है (संभवतः)।

ओरेकल वाक्य रचना की तुलना (यहाँ उदाहरण के लिए: http://www.techonthenet.com/oracle/check.php), क्या आप एक ',' शून्य और बाधा के बीच हो सकता है याद कर रहे हैं

+0

ओह हाँ! यह किया, धन्यवाद :) – Unknown

+0

मैंने वही गलती की थी। धन्यवाद :) +1 – Pavitar

1
यहाँ

उचित SQL क्वेरी है ...

CREATE TABLE bp (bpid VARCHAR(5), 
FOREIGN KEY (bpid) REFERENCES designation(desigid), 
upperlimit DECIMAL(10,2) NOT NULL, 
lowerlimit DECIMAL(10,2) NOT NULL, 
increment DECIMAL(10,2) NOT NULL, 
CONSTRAINT llvalid CHECK (upperlimit > lowerlimit)); 

नोट आखिरी पंक्ति में न्यूल और कंसस्ट्रेंट के बाद अल्पविराम।

1

समस्या यह है कि आपने इसे कॉलम स्तर की बाधा के रूप में परिभाषित किया है लेकिन यह अन्य कॉलम का संदर्भ देता है। आपको टेबल स्तर पर एक बाधा परिभाषित करनी होगी।

ALTER TABLE bp 
    ADD CONSTRAINT CK_limit CHECK (upperlimit > lowerlimit) 
+0

क्यों? यह किस तरह के मतभेद करेगा? – Unknown

संबंधित मुद्दे