Vous ne pouvez pas créer une contrainte non déterministe. Vous ne pouvez donc pas créer une contrainte qui référence une fonction comme current_date
ou sysdate
qui renvoie une valeur différente chaque fois que vous l'appelez.
Si vous souhaitez appliquer ce genre de chose, vous auriez besoin de créer un déclencheur sur la table qui renvoie une erreur si la règle d'entreprise est violée, à savoir
CREATE OR REPLACE TRIGGER trg_paciente
BEFORE INSERT OR UPDATE
ON paciente
FOR EACH ROW
BEGIN
IF(:new.FechaNacimiento > current_date)
THEN
RAISE_APPLICATION_ERROR(-20001, 'FechaNacimiento<=current_date must be in the past');
END IF;
END;
Vous obtiendrez la même erreur en utilisant la fonction 'SYSDATE' que vous obtiendriez avec' CURRENT_DATE'. Les deux sont non déterministes et les fonctions non déterministes ne sont pas autorisées dans les contraintes. –