sql >> Database >  >> RDS >> Oracle

SQL-fout:ORA-00907:ontbrekend haakje rechts worstelt

Er is veel mis met uw verklaring.

  • A_EMP_ID CHAR 5 BYTE mist de (..) rond de lengtebeperking
  • U wilt beslist geen gebruik maken van CHAR voor de admin_title . GebruikVARCHAR2 in plaats daarvan.
  • DIVERSITY_TRAINING_CERT = 'N','Y' is geen geldige uitdrukking. U wilt waarschijnlijk diversity_training_cert IN ('N','Y')
  • Terwijl FOREIGN KEY (a_emp_id) REFERENCES admin(a_emp_id) syntactisch correct is, heeft het geen zin. Ik neem aan dat je een manager_id . wilt of iets dergelijks. En dan iets als FOREIGN KEY (manager_id) REFERENCES admin(a_emp_id) .
    Als alternatief was je misschien bedoeld om te verwijzen naar een employee tafel. In dat geval de a_emp_id gegevenstype moet overeenkomen met het type PK-kolom in die tabel.
  • CONSTRAINT ADMIN_END_DATE CHECK (<= 'ADMIN_START_DATE'), heeft drie fouten:

    • een kolom mag niet tussen enkele aanhalingstekens staan. Het moet dus admin_start_date . zijn niet 'admin_start_date'
    • een controlebeperking vereist een juiste voorwaarde. <= admin_start_date is geen voorwaarde, je moet de kolom ermee vergelijken. Vermoedelijke admin_end_date
    • je hebt een komma , na die uitdrukking die ook verkeerd is.

Alles bij elkaar krijg je:

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

Niet gerelateerd, maar:het is ook absoluut niet nodig om alles in hoofdletters te schrijven.



  1. Lijnresultaten uitsluiten die een NULL-waarde hebben in een willekeurig veld?

  2. Hoe PHP+MySQL CMS zelf te updaten?

  3. Hoe het aantal en de namen van verschillende tekens in een string in PL/SQL te vinden?

  4. Help me met deze MySql full outer join (of unie)