sql >> Databasteknik >  >> RDS >> Oracle

Kontrollera Constraint Calling en funktion Oracle SQL-utvecklare

Nej, du kan inte göra det, se Restriktioner för kontrollbegränsningar:

  • Anrop till användardefinierade funktioner

Men du kan göra en lösning med virtuella kolumner

ALTER TABLE tbl_AccountAuthentications ADD (fnCheck NUMBER GENERATED ALWAYS AS (fnCheckValid(accountid_fk)) VIRTUAL);


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

Observera att funktionen måste vara DETERMINISTISK, annars fungerar den inte. Oracle verifierar inte om din funktion faktiskt är deterministisk, den letar bara efter nyckelordet. Den här är tillåten (även om det inte är meningsfullt alls):

CREATE OR REPLACE FUNCTION DET_FUNCTION RETURN NUMBER DETERMINISTIC IS 
BEGIN 
    RETURN DBMS_RANDOM.RANDOM();
END;
/


  1. Hur man konverterar gemener till versaler i MySQL

  2. Hur man automatiserar databasfailover med ClusterControl

  3. Hur hittar du diskstorleken för en Postgres / PostgreSQL-tabell och dess index

  4. Anropar ett PHP-skript från en MySQL-utlösare