Ada banyak yang salah dengan pernyataan Anda.
A_EMP_ID CHAR 5 BYTEtidak ada(..)di sekitar batasan panjang- Anda pasti tidak ingin menggunakan
CHARuntukadmin_title. GunakanVARCHAR2sebagai gantinya. DIVERSITY_TRAINING_CERT = 'N','Y'bukan ekspresi yang valid. Anda mungkin ingindiversity_training_cert IN ('N','Y')- Sementara
FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id)secara sintaksis benar, itu tidak masuk akal. Saya kira Anda menginginkanmanager_idatau sesuatu yang serupa. Dan kemudian sesuatu sepertiFOREIGN KEY (manager_id) REFERENCES admin(a_emp_id).
Atau Anda mungkin bermaksud untuk mereferensikanemployeemeja. Dalam hal inia_emp_idtipe data harus cocok dengan tipe kolom PK tabel itu. -
CONSTRAINT ADMIN_END_DATE CHECK (<= 'ADMIN_START_DATE'),memiliki tiga kesalahan:- kolom tidak boleh diapit oleh tanda kutip tunggal. Jadi harus
admin_start_datebukan'admin_start_date' - pembatasan pemeriksaan membutuhkan kondisi yang tepat.
<= admin_start_datebukan suatu kondisi, Anda perlu membandingkan kolom itu dengan sesuatu. Kemungkinanadmin_end_date - Anda memiliki koma
,setelah ekspresi itu yang salah juga.
- kolom tidak boleh diapit oleh tanda kutip tunggal. Jadi harus
Dengan menggabungkan semuanya, Anda mendapatkan:
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)
);
Tidak terkait, tetapi:sama sekali tidak perlu menulis semuanya dalam huruf besar.