Nee, dat kan niet, zie Beperkingen op controlebeperkingen:
- Oproepen naar door de gebruiker gedefinieerde functies
Maar u kunt een tijdelijke oplossing maken met behulp van virtuele kolommen
ALTER TABLE tbl_AccountAuthentications ADD (fnCheck NUMBER GENERATED ALWAYS AS (fnCheckValid(accountid_fk)) VIRTUAL);
ALTER TABLE tbl_AccountAuthentications
ADD CONSTRAINT chkCheckvalid CHECK(fnCheck <= 1);
Let op, functie moet DETERMINISTISCH zijn, anders werkt het niet. Oracle controleert niet of uw functie daadwerkelijk deterministisch is, het controleert alleen op het trefwoord. Deze is toegestaan (hoewel het helemaal geen zin heeft):
CREATE OR REPLACE FUNCTION DET_FUNCTION RETURN NUMBER DETERMINISTIC IS
BEGIN
RETURN DBMS_RANDOM.RANDOM();
END;
/