Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Verificar Restrição Chamando uma Função Desenvolvedor Oracle SQL


Não, você não pode fazer isso, consulte Restrições em restrições de verificação:
  • Chamadas para funções definidas pelo usuário

Mas você pode fazer uma solução alternativa usando colunas virtuais
ALTER TABLE tbl_AccountAuthentications ADD (fnCheck NUMBER GENERATED ALWAYS AS (fnCheckValid(accountid_fk)) VIRTUAL);


ALTER TABLE tbl_AccountAuthentications
ADD CONSTRAINT chkCheckvalid CHECK(fnCheck <= 1);

Nota, a função tem que ser DETERMINISTA, caso contrário não funciona. O Oracle não verifica se sua função é realmente determinística, apenas verifica a palavra-chave. Este é permitido (embora não faça nenhum sentido):
CREATE OR REPLACE FUNCTION DET_FUNCTION RETURN NUMBER DETERMINISTIC IS 
BEGIN 
    RETURN DBMS_RANDOM.RANDOM();
END;
/