Nej, du kan ikke gøre det, se Begrænsninger for kontrolbegrænsninger:
- Opkald til brugerdefinerede funktioner
Men du kan lave en løsning ved at bruge virtuelle kolonner
ALTER TABLE tbl_AccountAuthentications ADD (fnCheck NUMBER GENERATED ALWAYS AS (fnCheckValid(accountid_fk)) VIRTUAL);
ALTER TABLE tbl_AccountAuthentications
ADD CONSTRAINT chkCheckvalid CHECK(fnCheck <= 1);
Bemærk, funktionen skal være DETERMINISTISK, ellers virker den ikke. Oracle verificerer ikke, om din funktion faktisk er deterministisk, den tjekker blot for søgeordet. Denne er tilladt (selvom det overhovedet ikke giver nogen mening):
CREATE OR REPLACE FUNCTION DET_FUNCTION RETURN NUMBER DETERMINISTIC IS
BEGIN
RETURN DBMS_RANDOM.RANDOM();
END;
/