Ve vašem prohlášení je hodně špatně.
A_EMP_ID CHAR 5 BYTE
chybí(..)
kolem délkového omezení- Určitě nechcete používat
CHAR
proadmin_title
. PoužijteVARCHAR2
místo toho. DIVERSITY_TRAINING_CERT = 'N','Y'
není platný výraz. Pravděpodobně budete chtítdiversity_training_cert IN ('N','Y')
- Zatímco
FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id)
je syntakticky správně, nedává to smysl. Předpokládám, že chcetemanager_id
nebo něco podobného. A pak něco jakoFOREIGN KEY (manager_id) REFERENCES admin(a_emp_id)
.
Případně jste možná zamýšleli odkazovat naemployee
stůl. V takovém případěa_emp_id
datový typ musí odpovídat typu sloupce PK v tabulce. -
CONSTRAINT ADMIN_END_DATE CHECK (<= 'ADMIN_START_DATE'),
má tři chyby:- sloupec nesmí být uzavřen do jednoduchých uvozovek. Musí to být tedy
admin_start_date
nikoli'admin_start_date'
- kontrolní omezení vyžaduje správnou podmínku.
<= admin_start_date
není podmínkou, je potřeba sloupec s něčím porovnat. Pravděpodobnéadmin_end_date
- máte čárku
,
za tímto výrazem, který je také nesprávný.
- sloupec nesmí být uzavřen do jednoduchých uvozovek. Musí to být tedy
Když to všechno dáte dohromady, dostanete:
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)
);
Nesouvisí, ale:také není absolutně potřeba psát vše velkými písmeny.