Er is veel mis met uw verklaring.
A_EMP_ID CHAR 5 BYTE
mist de(..)
rond de lengtebeperking- U wilt beslist geen gebruik maken van
CHAR
voor deadmin_title
. GebruikVARCHAR2
in plaats daarvan. DIVERSITY_TRAINING_CERT = 'N','Y'
is geen geldige uitdrukking. U wilt waarschijnlijkdiversity_training_cert IN ('N','Y')
- Terwijl
FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id)
syntactisch correct is, heeft het geen zin. Ik neem aan dat je eenmanager_id
. wilt of iets dergelijks. En dan iets alsFOREIGN KEY (manager_id) REFERENCES admin(a_emp_id)
.
Als alternatief was je misschien bedoeld om te verwijzen naar eenemployee
tafel. In dat geval dea_emp_id
gegevenstype moet overeenkomen met het type PK-kolom in die tabel. -
CONSTRAINT ADMIN_END_DATE CHECK (<= 'ADMIN_START_DATE'),
heeft drie fouten:- een kolom mag niet tussen enkele aanhalingstekens staan. Het moet dus
admin_start_date
. zijn niet'admin_start_date'
- een controlebeperking vereist een juiste voorwaarde.
<= admin_start_date
is geen voorwaarde, je moet de kolom ermee vergelijken. Vermoedelijkeadmin_end_date
- je hebt een komma
,
na die uitdrukking die ook verkeerd is.
- een kolom mag niet tussen enkele aanhalingstekens staan. Het moet dus
Alles bij elkaar krijg je:
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)
);
Niet gerelateerd, maar:het is ook absoluut niet nodig om alles in hoofdletters te schrijven.