SQL-Fehler: ORA-00907: Rechte Klammer fehlt
Bin ich mit dem Oracle SQL developer erstellen Sie eine einfache Tabelle mit dem folgenden Befehl:
CREATE TABLE chartered_flight(
flight_no NUMBER(4) PRIMARY KEY
, customer_id FOREIGN KEY
, aircraft_no FOREIGN KEY
, flight_type VARCHAR2 (12)
, flight_date DATE NOT NULL
, flight_time TO_DATE 'HH:MI' NOT NULL
, takeoff_at CHAR (3) NOT NULL
, destination CHAR (3) NOT NULL
)
Wo ist die fehlende Rechte Klammer? Oder ist die syntax, die ich verwendet habe, falsch.
Habe ich folgende änderungen vorgenommen:
CREATE TABLE chartered flight(
flight_no NUMBER(4) PRIMARY KEY
, customer_id NUMBER(6) REFERENCES [customer]([customer_id])
, aircraft_no NUMBER(4) REFERENCES [aircraft]([aircraft_no])
, flight_type VARCHAR2 (12)
, flight_date DATE NOT NULL
, flight_time INTERVAL DAY TO SECOND NOT NULL
, takeoff_at CHAR (3) NOT NULL
, destination CHAR (3) NOT NULL)
Nun bekomme ich diesen Fehler:
Error at Command Line:1 Column:23
Error report:
SQL Error: ORA-00922: missing or invalid option
00922. 00000 - "missing or invalid option"
*Cause:
*Action:
Habe ich das Gefühl es ist etwas zu tun mit TO_DATE, oder ist es, weil ich nicht erstellt, mein Flugzeug Tabelle noch so aircraft_no fehlt? Kann jemand bitte helfen, danke.
Nicht surround-Tabelle/Spaltennamen mit [ ].
InformationsquelleAutor Jatinder Singh | 2011-12-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Angeben foreign key-Einschränkung, verwenden Sie entweder inline
customer_id [type] REFERENCES [master_table_name]([master_column_name])
oder out of line syntax :, CONSTRAINT [constraint_name] FOREIGN KEY(customer_id) REFERENCES [master_table_name]([master_column_name])
Siehe Beispiel hier. Außerdem ist es in der Regel sinnvoll, Indizes für Fremdschlüssel-Spalten.Für flight_time müssen Sie wahrscheinlich verwenden
INTERVAL DAY TO SECOND
TypSie brauchen nicht in eckigen Klammern in der
CREATE TABLE
. In meiner Antwort, die ich verwenden, um anzugeben, dass Sie haben, um die tatsächlichen Werte, so müssen Siecustomer_id NUMBER(6) REFERENCES customer(customer_id)
Ich habe diese änderung vorgenommen, aber ich bin noch immer der exakt gleiche Fehler?! @a1ex07
InformationsquelleAutor a1ex07
Es gibt keine Art genannt, TO_DATE. To_DATE ist die Umwandlung einer Zeichenfolge in ein Datum.
Also die create-Anweisung sollte so etwas wie
Können Sie to_date bei der Auswahl der Daten aus der Tabelle. Zum Beispiel
Sie können möglicherweise erklären flight_time als varchar2, und dann verwenden Sie eine check-Einschränkung, die Daten zu validieren.
Wäre es nicht besser, eine flight_time als Zahl in Minuten, wenn das ist der niedrigste Maßeinheit, die Sie verwenden möchten, und dann können Sie wandeln es in Stunden - / Tage-in-code. Ich definitiv nicht über eine Zahl, werden als varchar, wenn überhaupt möglich. Gebunden, ärger zu machen.
wo würde ich implementieren Sie die check-Einschränkung? Ich denke, das ist OTT-vielleicht sollte ich lass es einfach Datum wie dieses ist nur für die Kursarbeit.
ja, ich bin damit einverstanden, aber er möchte ':'. Ich bin damit einverstanden, dass die Anzahl format kann leicht formatiert werden.
InformationsquelleAutor ziggy
Oben ALTER-Anweisung verursacht die folgende Fehlermeldung.
Fehler-report:
SQL-Fehler: ORA-00907: missing right Klammer
00907. 00000 - "fehlende Rechte Klammer"
*Ursache:
*Aktion:
Wie auch immer, ich habe korrigiert meine selbst-und hier ist die richtige.
Lösung: Es ist ein Leerzeichen in den Namen der zweiten Spalte, die diesen Fehler verursacht hat.
Dank,
Manne
InformationsquelleAutor mannedear