sql >> Database teknologi >  >> RDS >> Oracle

Check Constraint Calling af en funktion Oracle SQL-udvikler

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;
/


  1. MySQL streng udskiftning

  2. 19 Onlineressourcer til at lære om databasedesignfejl

  3. Sådan genereres et tilfældigt heltal inden for et område i MariaDB

  4. Batch-tilstand normalisering og ydeevne