नहीं, आप ऐसा नहीं कर सकते, चेक बाधाओं पर प्रतिबंध देखें:
- उपयोगकर्ता द्वारा परिभाषित कार्यों के लिए कॉल
लेकिन आप वर्चुअल कॉलम का उपयोग करके समाधान कर सकते हैं
ALTER TABLE tbl_AccountAuthentications ADD (fnCheck NUMBER GENERATED ALWAYS AS (fnCheckValid(accountid_fk)) VIRTUAL);
ALTER TABLE tbl_AccountAuthentications
ADD CONSTRAINT chkCheckvalid CHECK(fnCheck <= 1);
ध्यान दें, फ़ंक्शन को नियतात्मक होना चाहिए, अन्यथा यह काम नहीं करता है। ओरेकल यह सत्यापित नहीं करता है कि आपका फ़ंक्शन वास्तव में नियतात्मक है या नहीं, यह केवल कीवर्ड की जांच करता है। इसकी अनुमति है (हालांकि इसका कोई मतलब नहीं है):
CREATE OR REPLACE FUNCTION DET_FUNCTION RETURN NUMBER DETERMINISTIC IS
BEGIN
RETURN DBMS_RANDOM.RANDOM();
END;
/