Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Błąd SQL:ORA-00907:brak prawego nawiasu podczas walki

W Twoim oświadczeniu jest wiele błędów.

  • A_EMP_ID CHAR 5 BYTE brakuje (..) wokół ograniczenia długości
  • Na pewno nie chcesz używać CHAR dla admin_title . UżyjVARCHAR2 zamiast tego.
  • DIVERSITY_TRAINING_CERT = 'N','Y' nie jest prawidłowym wyrażeniem. Prawdopodobnie chcesz diversity_training_cert IN ('N','Y')
  • Podczas gdy FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id) jest poprawna składniowo, nie ma sensu. Chyba chcesz manager_id lub coś podobnego. A potem coś takiego jak FOREIGN KEY (manager_id) REFERENCES admin(a_emp_id) .
    Alternatywnie możesz odnieść się do employee stół. W takim przypadku a_emp_id typ danych musi odpowiadać typowi kolumny PK w tej tabeli.
  • CONSTRAINT ADMIN_END_DATE CHECK (<= 'ADMIN_START_DATE'), ma trzy błędy:

    • kolumna nie może być ujęta w pojedyncze cudzysłowy. Więc to musi być admin_start_date nie 'admin_start_date'
    • ograniczenie sprawdzające wymaga odpowiedniego warunku. <= admin_start_date nie jest warunkiem, musisz porównać kolumnę z czymś. Przypuszczalnie admin_end_date
    • masz przecinek , po tym wyrażeniu, które również jest błędne.

Łącząc to wszystko razem, otrzymujesz:

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) 
);

Niezwiązane, ale:nie ma też absolutnie potrzeby pisania wszystkiego wielkimi literami.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstaw, jeśli nie istnieje Oracle

  2. Zapytanie zbiorcze z pewnym logicznym połączeniem przy użyciu Oracle SQL

  3. Wywoływanie kodu pakietu PL/SQL w programie Java

  4. Błąd 1033 otrzymał logowanie do trybu gotowości

  5. Oracle DB:Jak mogę napisać zapytanie, ignorując wielkość liter?