Có rất nhiều điều sai với tuyên bố của bạn.
-
A_EMP_ID CHAR 5 BYTE
thiếu(..)
xung quanh giới hạn độ dài - Bạn chắc chắn không muốn sử dụng
CHAR
choadmin_title
. Sử dụngVARCHAR2
thay vào đó. -
DIVERSITY_TRAINING_CERT = 'N','Y'
không phải là một biểu thức hợp lệ. Bạn có thể muốndiversity_training_cert IN ('N','Y')
- Trong khi
FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id)
là chính xác về mặt cú pháp, nó không có ý nghĩa. Tôi đoán bạn muốn cómanager_id
hoặc một cái gì đó tương tự. Và sau đó làFOREIGN KEY (manager_id) REFERENCES admin(a_emp_id)
.
Ngoài ra, bạn có thể định tham chiếu đến mộtemployee
bàn. Trong trường hợp đó,a_emp_id
kiểu dữ liệu phải khớp với loại cột PK trong bảng đó. -
CONSTRAINT ADMIN_END_DATE CHECK (<= 'ADMIN_START_DATE'),
có ba lỗi:- một cột không được đặt trong dấu ngoặc kép. Vì vậy, nó phải là
admin_start_date
không phải'admin_start_date'
- một ràng buộc kiểm tra yêu cầu một điều kiện thích hợp.
<= admin_start_date
không phải là một điều kiện, bạn cần phải so sánh cột nó với một cái gì đó. Có thể đặt trướcadmin_end_date
- bạn có một dấu phẩy
,
sau biểu thức đó cũng sai.
- một cột không được đặt trong dấu ngoặc kép. Vì vậy, nó phải là
Tổng hợp tất cả lại với nhau, bạn sẽ nhận được:
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)
);
Không liên quan, nhưng:cũng hoàn toàn không cần phải viết mọi thứ bằng chữ hoa.