sql >> Databáze >  >> RDS >> Oracle

Chyba SQL:ORA-00907:chybí pravá závorka, problém

Ve vašem prohlášení je hodně špatně.

  • A_EMP_ID CHAR 5 BYTE chybí (..) kolem délkového omezení
  • Určitě nechcete používat CHAR pro admin_title . Použijte VARCHAR2 místo toho.
  • DIVERSITY_TRAINING_CERT = 'N','Y' není platný výraz. Pravděpodobně budete chtít diversity_training_cert IN ('N','Y')
  • Zatímco FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id) je syntakticky správně, nedává to smysl. Předpokládám, že chcete manager_id nebo něco podobného. A pak něco jako FOREIGN KEY (manager_id) REFERENCES admin(a_emp_id) .
    Případně jste možná zamýšleli odkazovat na employee stůl. V takovém případě a_emp_id datový typ musí odpovídat typu sloupce PK v tabulce.
  • CONSTRAINT ADMIN_END_DATE CHECK (<= 'ADMIN_START_DATE'), má tři chyby:

    • sloupec nesmí být uzavřen do jednoduchých uvozovek. Musí to být tedy admin_start_date nikoli 'admin_start_date'
    • kontrolní omezení vyžaduje správnou podmínku. <= admin_start_date není podmínkou, je potřeba sloupec s něčím porovnat. Pravděpodobné admin_end_date
    • máte čárku , za tímto výrazem, který je také nesprávný.

Když to všechno dáte dohromady, dostanete:

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

Nesouvisí, ale:také není absolutně potřeba psát vše velkými písmeny.



  1. vytvořit jedinečná omezení na uživatele

  2. Typy kurzoru SQL Server - Dynamický kurzor | Kurz SQL Server / Kurz TSQL

  3. Je předpona sp_ stále ne-ne?

  4. SQL Join na hodnotách null