Има много грешно твърдение.
A_EMP_ID CHAR 5 BYTE
липсва(..)
около ограничението за дължина- Със сигурност не искате да използвате
CHAR
заadmin_title
. ИзползвайтеVARCHAR2
вместо това. DIVERSITY_TRAINING_CERT = 'N','Y'
не е валиден израз. Вероятно искатеdiversity_training_cert IN ('N','Y')
- Докато
FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id)
е синтактично правилно, няма смисъл. Предполагам, че искатеmanager_id
или нещо подобно. И след това нещо катоFOREIGN KEY (manager_id) REFERENCES admin(a_emp_id)
.
Алтернативно може да сте възнамерявали да посочитеemployee
маса. В този случайa_emp_id
типът данни трябва да съответства на типа на PK колоната на тази таблица. -
CONSTRAINT ADMIN_END_DATE CHECK (<= 'ADMIN_START_DATE'),
има три грешки:- колона не трябва да бъде затворена в единични кавички. Така че трябва да е
admin_start_date
не'admin_start_date'
- контролното ограничение изисква правилно условие.
<= admin_start_date
не е условие, трябва да сравните колоната с нещо. Предполагаемadmin_end_date
- имате запетая
,
след този израз, който също е грешен.
- колона не трябва да бъде затворена в единични кавички. Така че трябва да е
Събирайки всичко това, получавате:
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)
);
Не е свързано, но:също така няма абсолютно никаква нужда да пишете всичко с главни букви.