Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Kesalahan SQL:ORA-00907:tanda kurung kanan yang hilang berjuang

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 untuk admin_title . GunakanVARCHAR2 sebagai gantinya.
  • DIVERSITY_TRAINING_CERT = 'N','Y' bukan ekspresi yang valid. Anda mungkin ingin diversity_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 menginginkan manager_id atau sesuatu yang serupa. Dan kemudian sesuatu seperti FOREIGN KEY (manager_id) REFERENCES admin(a_emp_id) .
    Atau Anda mungkin bermaksud untuk mereferensikan employee meja. Dalam hal ini a_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. Kemungkinan admin_end_date
    • Anda memiliki koma , setelah ekspresi itu yang salah juga.

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Saya mendapatkan kesalahan ORA-01775:perulangan rantai sinonim saat saya menggunakan sqlldr

  2. Fungsi daftar ORACLE SQL

  3. Memahami segmen Lob (SYS_LOB) di Oracle?

  4. ResultSetMetaData getScale mengembalikan 0

  5. Ubah gambar gumpalan menjadi PUBLIC.ORDIMAGE di plsql