SQL Créer une table erreur
-
21-08-2019 - |
Question
Je commence juste à apprendre SQL et ont trébuché au premier obstacle, je suis incapable de créer une table. Ci-dessous l'exemple de code. L'erreur que je reçois lors de l'exécution de la déclaration, les références ligne 7 indiquant qu'il ya un problème avec un « opérateur relationnel ». Le but de ligne 7 est de vérifier que l'âge de la personne est supérieure à 18.
J'utilise Oracle (pas sûr si cela fera une différence). J'espère que quelqu'un peut me diriger dans la bonne direction.
1. CREATE TABLE employee
2. (
3. empID VARCHAR2(20) NOT NULL primary key,
4. surname VARCHAR2(15) NOT NULL CHECK(surname=UPPER(surname)),
5. deptCode CHAR(5) NOT NULL CHECK(deptCode=UPPER(deptCode)),
6. empYear NUMBER(1,0) NOT NULL CHECK(empYear >= 1 AND empYear <= 4),
7. birthDate DATE NOT NULL CHECK((SYSDATE - birthDate) /365 ) >= 18
8. );
Merci.
La solution
Vous ne pouvez pas définir une contrainte CHECK qui fait référence à une fonction comme SYSDATE.
La documentation Oracle a une discussion sur le restrictions sur les contraintes CHECK
Autres conseils
Vérifiez parenthèses.
DATE NOT NULL CHECK(((SYSDATE - birthDate) /365 ) >= 18)
EDIT:. Comme Justin a fait remarquer, vous ne pouvez pas utiliser SYSDATE ici