sql >> Databasteknik >  >> RDS >> Oracle

SQL-fel:ORA-00907:saknar höger parentes som kämpar

Det är mycket fel med ditt uttalande.

  • A_EMP_ID CHAR 5 BYTE saknar (..) runt längdbegränsningen
  • Du vill absolut inte använda CHAR för admin_title . Använd VARCHAR2 istället.
  • DIVERSITY_TRAINING_CERT = 'N','Y' är inte ett giltigt uttryck. Du vill förmodligen ha diversity_training_cert IN ('N','Y')
  • Medan FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id) är syntaktisk korrekt, är det inte vettigt. Jag antar att du vill ha ett manager_id eller något liknande. Och sedan något som FOREIGN KEY (manager_id) REFERENCES admin(a_emp_id) .
    Alternativt kanske du tänkte referera till en employee tabell. I så fall a_emp_id datatypen måste matcha typen av PK-kolumn som tabellen.
  • CONSTRAINT ADMIN_END_DATE CHECK (<= 'ADMIN_START_DATE'), har tre fel:

    • en kolumn får inte omges av enkla citattecken. Så det måste vara admin_start_date inte 'admin_start_date'
    • en kontrollbegränsning kräver ett korrekt skick. <= admin_start_date är inte ett villkor, du måste jämföra kolumnen det med något. Förmodligen admin_end_date
    • du har ett kommatecken , efter det uttrycket som också är fel.

Lägger du ihop allt får du:

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

Orelaterat, men:det finns absolut inget behov av att skriva allt med versaler.



  1. Icke-superanvändare kan inte ansluta om servern inte begär ett lösenord när dblink används

  2. Ogiltigt nummer i Oracle SQL Case

  3. SQL Server - transaktioner återgår vid fel?

  4. Hur man arbetar med datumfunktioner i Oracle sql