Det är mycket fel med ditt uttalande.
A_EMP_ID CHAR 5 BYTE
saknar(..)
runt längdbegränsningen- Du vill absolut inte använda
CHAR
föradmin_title
. AnvändVARCHAR2
istället. DIVERSITY_TRAINING_CERT = 'N','Y'
är inte ett giltigt uttryck. Du vill förmodligen hadiversity_training_cert IN ('N','Y')
- Medan
FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id)
är syntaktisk korrekt, är det inte vettigt. Jag antar att du vill ha ettmanager_id
eller något liknande. Och sedan något somFOREIGN KEY (manager_id) REFERENCES admin(a_emp_id)
.
Alternativt kanske du tänkte referera till enemployee
tabell. I så falla_emp_id
datatypen måste matcha typen av PK-kolumn som tabellen. -
CONSTRAINT ADMIN_END_DATE CHECK (<= 'ADMIN_START_DATE'),
har tre fel:- en kolumn får inte omges av enkla citattecken. Så det måste vara
admin_start_date
inte'admin_start_date'
- en kontrollbegränsning kräver ett korrekt skick.
<= admin_start_date
är inte ett villkor, du måste jämföra kolumnen det med något. Förmodligenadmin_end_date
- du har ett kommatecken
,
efter det uttrycket som också är fel.
- en kolumn får inte omges av enkla citattecken. Så det måste vara
Lägger du ihop allt 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)
);
Orelaterat, men:det finns absolut inget behov av att skriva allt med versaler.