Nie, nie możesz tego zrobić, zobacz Ograniczenia dotyczące ograniczeń sprawdzania:
- Wywołania funkcji zdefiniowanych przez użytkownika
Ale możesz obejść ten problem za pomocą wirtualnych kolumn
ALTER TABLE tbl_AccountAuthentications ADD (fnCheck NUMBER GENERATED ALWAYS AS (fnCheckValid(accountid_fk)) VIRTUAL);
ALTER TABLE tbl_AccountAuthentications
ADD CONSTRAINT chkCheckvalid CHECK(fnCheck <= 1);
Uwaga, funkcja musi być DETERMINYSTYCZNA, w przeciwnym razie nie działa. Oracle nie weryfikuje, czy twoja funkcja jest rzeczywiście deterministyczna, sprawdza tylko słowo kluczowe. Ten jest dozwolony (choć nie ma to żadnego sensu):
CREATE OR REPLACE FUNCTION DET_FUNCTION RETURN NUMBER DETERMINISTIC IS
BEGIN
RETURN DBMS_RANDOM.RANDOM();
END;
/