Il y a beaucoup de mal dans votre déclaration.
A_EMP_ID CHAR 5 BYTEil manque le(..)autour de la contrainte de longueur- Vous ne voulez absolument pas utiliser
CHARpour leadmin_title. UtilisezVARCHAR2à la place. DIVERSITY_TRAINING_CERT = 'N','Y'n'est pas une expression valide. Vous voulez probablementdiversity_training_cert IN ('N','Y')- Alors que
FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id)est syntaxiquement correct, cela n'a pas de sens. Je suppose que vous voulez unmanager_idou quelque chose de similaire. Et puis quelque chose commeFOREIGN KEY (manager_id) REFERENCES admin(a_emp_id).
Vous avez peut-être également l'intention de faire référence à unemployeetable. Dans ce cas, lea_emp_idle type de données doit correspondre au type de colonne PK de cette table. -
CONSTRAINT ADMIN_END_DATE CHECK (<= 'ADMIN_START_DATE'),comporte trois erreurs :- une colonne ne doit pas être entourée de guillemets simples. Il doit donc être
admin_start_datepas'admin_start_date' - une contrainte de vérification nécessite une condition appropriée.
<= admin_start_daten'est pas une condition, vous devez comparer la colonne avec quelque chose.admin_end_dateprésumé - vous avez une virgule
,après cette expression qui est également fausse.
- une colonne ne doit pas être entourée de guillemets simples. Il doit donc être
En mettant tout cela ensemble, vous obtenez :
CREATE TABLE admin
(
a_emp_id CHAR(5 BYTE) NOT NULL,
admin_start_date DATE DEFAULT SYSDATE NOT NULL,
admin_end_date DATE NULL,
diversity_training_cert CHAR(1 BYTE) DEFAULT 'N' NOT NULL,
admin_title VARCHAR2(40 BYTE) NULL,
CONSTRAINT admin_pk
PRIMARY KEY(a_emp_id),
CONSTRAINT admin_fk1
FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id),
CONSTRAINT admin_diversity_cert
CHECK (diversity_training_cert IN ('N','Y')),
CONSTRAINT admin_end_date
CHECK ( admin_end_date <= admin_start_date)
);
Sans rapport, mais :il n'est absolument pas nécessaire non plus de tout écrire en majuscules.