W Twoim oświadczeniu jest wiele błędów.
A_EMP_ID CHAR 5 BYTE
brakuje(..)
wokół ograniczenia długości- Na pewno nie chcesz używać
CHAR
dlaadmin_title
. UżyjVARCHAR2
zamiast tego. DIVERSITY_TRAINING_CERT = 'N','Y'
nie jest prawidłowym wyrażeniem. Prawdopodobnie chceszdiversity_training_cert IN ('N','Y')
- Podczas gdy
FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id)
jest poprawna składniowo, nie ma sensu. Chyba chceszmanager_id
lub coś podobnego. A potem coś takiego jakFOREIGN KEY (manager_id) REFERENCES admin(a_emp_id)
.
Alternatywnie możesz odnieść się doemployee
stół. W takim przypadkua_emp_id
typ danych musi odpowiadać typowi kolumny PK w tej tabeli. -
CONSTRAINT ADMIN_END_DATE CHECK (<= 'ADMIN_START_DATE'),
ma trzy błędy:- kolumna nie może być ujęta w pojedyncze cudzysłowy. Więc to musi być
admin_start_date
nie'admin_start_date'
- ograniczenie sprawdzające wymaga odpowiedniego warunku.
<= admin_start_date
nie jest warunkiem, musisz porównać kolumnę z czymś. Przypuszczalnieadmin_end_date
- masz przecinek
,
po tym wyrażeniu, które również jest błędne.
- kolumna nie może być ujęta w pojedyncze cudzysłowy. Więc to musi być
Łącząc to wszystko razem, otrzymujesz:
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)
);
Niezwiązane, ale:nie ma też absolutnie potrzeby pisania wszystkiego wielkimi literami.