2009-02-06 7 views
2

Je commence juste à apprendre le SQL et j'ai trébuché sur le premier obstacle, je suis incapable de créer une table. Voici l'exemple de code. L'erreur que je reçois lors de l'exécution de l'instruction, la ligne de référence 7 indiquant qu'il y a 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érieur à 18.SQL Create Table Error

J'utilise Oracle (ne sachant pas 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.

Répondre

8

Vous ne pouvez pas définir une contrainte CHECK qui fait référence à une fonction telle que SYSDATE.

La documentation Oracle a une discussion sur le restrictions on CHECK constraints

+0

Nous vous remercions pour votre aide, je vais examiner. Je vous remercie. – Ronnie

1

Vérifiez vos parenthèses.

DATE NOT NULL CHECK(((SYSDATE - birthDate) /365) >= 18) 

EDIT: Comme Justin a fait remarquer, vous ne pouvez pas utiliser SYSDATE ici.

Questions connexes