Der er meget galt med dit udsagn.
A_EMP_ID CHAR 5 BYTE
mangler(..)
omkring længdebegrænsningen- Du ønsker absolut ikke at bruge
CHAR
foradmin_title
. BrugVARCHAR2
i stedet. DIVERSITY_TRAINING_CERT = 'N','Y'
er ikke et gyldigt udtryk. Du vil sandsynligvis havediversity_training_cert IN ('N','Y')
- Mens
FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id)
er syntaktisk korrekt, giver det ikke mening. Jeg gætter på, at du vil have etmanager_id
eller noget lignende. Og så noget somFOREIGN KEY (manager_id) REFERENCES admin(a_emp_id)
.
Alternativt har du måske tænkt dig at henvise til enemployee
bord. I så fald era_emp_id
datatypen skal matche typen af PK-kolonne i den pågældende tabel. -
CONSTRAINT ADMIN_END_DATE CHECK (<= 'ADMIN_START_DATE'),
har tre fejl:- en kolonne må ikke være omgivet af enkelte anførselstegn. Så det skal være
admin_start_date
ikke'admin_start_date'
- en kontrolbegrænsning kræver en korrekt tilstand.
<= admin_start_date
er ikke en betingelse, skal du sammenligne kolonnen det med noget. Formodentligadmin_end_date
- du har et komma
,
efter det udtryk, som også er forkert.
- en kolonne må ikke være omgivet af enkelte anførselstegn. Så det skal være
Når du sætter det hele sammen får du:
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)
);
Ikke relateret, men:der er heller ingen grund til at skrive alt med store bogstaver.