An Ihrer Aussage ist vieles falsch.
A_EMP_ID CHAR 5 BYTE
fehlt der(..)
um die Längenbeschränkung- Sie möchten auf keinen Fall
CHAR
verwenden für denadmin_title
. Verwenden SieVARCHAR2
stattdessen. DIVERSITY_TRAINING_CERT = 'N','Y'
ist kein gültiger Ausdruck. Wahrscheinlich möchten Siediversity_training_cert IN ('N','Y')
- Während
FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id)
syntaktisch korrekt ist, macht es keinen Sinn. Ich vermute, Sie möchten einemanager_id
oder etwas ähnliches. Und dann so etwas wieFOREIGN KEY (manager_id) REFERENCES admin(a_emp_id)
.
Alternativ möchten Sie vielleicht auf einenemployee
verweisen Tisch. In diesem Fall diea_emp_id
Der Datentyp muss mit dem Typ der PK-Spalte dieser Tabelle übereinstimmen. -
CONSTRAINT ADMIN_END_DATE CHECK (<= 'ADMIN_START_DATE'),
hat drei Fehler:- eine Spalte darf nicht in einfache Anführungszeichen gesetzt werden. Es muss also
admin_start_date
sein nicht'admin_start_date'
- Ein Check-Constraint erfordert eine korrekte Bedingung.
<= admin_start_date
ist keine Bedingung, Sie müssen die Spalte mit etwas vergleichen. Vermutlichadmin_end_date
- Sie haben ein Komma
,
nach diesem Ausdruck, der ebenfalls falsch ist.
- eine Spalte darf nicht in einfache Anführungszeichen gesetzt werden. Es muss also
Alles zusammen ergibt:
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)
);
Unabhängig, aber:Es ist auch absolut nicht nötig, alles in Großbuchstaben zu schreiben.