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.

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top