Oracle
 sql >> база данни >  >> RDS >> Oracle

SQL грешка:ORA-00907:проблем с липсваща дясна скоба

Има много грешно твърдение.

  • A_EMP_ID CHAR 5 BYTE липсва (..) около ограничението за дължина
  • Със сигурност не искате да използвате CHAR за admin_title . Използвайте VARCHAR2 вместо това.
  • DIVERSITY_TRAINING_CERT = 'N','Y' не е валиден израз. Вероятно искате diversity_training_cert IN ('N','Y')
  • Докато FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id) е синтактично правилно, няма смисъл. Предполагам, че искате manager_id или нещо подобно. И след това нещо като FOREIGN KEY (manager_id) REFERENCES admin(a_emp_id) .
    Алтернативно може да сте възнамерявали да посочите employee маса. В този случай a_emp_id типът данни трябва да съответства на типа на PK колоната на тази таблица.
  • CONSTRAINT ADMIN_END_DATE CHECK (<= 'ADMIN_START_DATE'), има три грешки:

    • колона не трябва да бъде затворена в единични кавички. Така че трябва да е admin_start_date не 'admin_start_date'
    • контролното ограничение изисква правилно условие. <= admin_start_date не е условие, трябва да сравните колоната с нещо. Предполагаем admin_end_date
    • имате запетая , след този израз, който също е грешен.

Събирайки всичко това, получавате:

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

Не е свързано, но:също така няма абсолютно никаква нужда да пишете всичко с главни букви.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. трябва да групирате записи въз основа на съвпадащи сторнирания

  2. Как да инсталирате Oracle SQL Developer 18.2 на Windows 10?

  3. Оператори на набор от Oracle

  4. Каква е разликата между вложен масив и асоциативен масив?

  5. PreparedStatement се изпълнява успешно в oracle, но хвърля изключение в Microsoft SQL