Ada banyak yang salah dengan pernyataan Anda.
A_EMP_ID CHAR 5 BYTE
tidak ada(..)
di sekitar batasan panjang- Anda pasti tidak ingin menggunakan
CHAR
untukadmin_title
. GunakanVARCHAR2
sebagai 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_id
atau sesuatu yang serupa. Dan kemudian sesuatu sepertiFOREIGN KEY (manager_id) REFERENCES admin(a_emp_id)
.
Atau Anda mungkin bermaksud untuk mereferensikanemployee
meja. Dalam hal inia_emp_id
tipe 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_date
bukan'admin_start_date'
- pembatasan pemeriksaan membutuhkan kondisi yang tepat.
<= admin_start_date
bukan 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.