Il y a beaucoup de mal dans votre déclaration.
A_EMP_ID CHAR 5 BYTE
il manque le(..)
autour de la contrainte de longueur- Vous ne voulez absolument pas utiliser
CHAR
pour 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_id
ou 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 à unemployee
table. Dans ce cas, lea_emp_id
le 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_date
pas'admin_start_date'
- une contrainte de vérification nécessite une condition appropriée.
<= admin_start_date
n'est pas une condition, vous devez comparer la colonne avec quelque chose.admin_end_date
pré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.