Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Lỗi SQL:ORA-00907:đấu tranh với dấu ngoặc đơn bên phải

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 cho admin_title . Sử dụng VARCHAR2 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ốn diversity_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ột employee 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ước admin_end_date
    • bạn có một dấu phẩy , sau biểu thức đó cũng sai.

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thể hiện loại Blob có thể nối tiếp trong tệp ánh xạ ngủ đông

  2. Oracle 11g - Vòng lặp FOR chỉ chèn các ngày trong tuần vào một bảng?

  3. Hiệu suất rất chậm trong Django với máy chủ Oracle từ xa

  4. Làm thế nào để truy xuất dữ liệu BLOB từ Oracle Client bằng cách sử dụng trình điều khiển Oledb trong Vb.Net?

  5. Trừ số ngày cho một ngày trong PL / SQL