Ungültiger Datentyp beim hinzufügen der Einschränkung in Oracle
Möchte ich diese Tabelle erstellen in Oracle. Dies ist nur der table-SQL-Skript.
-- CREATE TABLES SECTION -------------------------------------------------
-- TABLE DATACENTER
CREATE TABLE DATACENTER(
DATACENTERID INTEGER NOT NULL,
NAME VARCHAR2(80 ) NOT NULL,
LOCATION VARCHAR2(200 ),
DCALLOWEDWEIGHTKG NUMBER(9,0),
DCMAXIMUMWEIGHTKG NUMBER(9,0),
DCALLOWEDPOWERWATT NUMBER(9,0),
DCMAXPOWERWATT NUMBER(9,0),
DCALLOWCOOLINGPOWERBTU NUMBER(9,0),
DCMAXCOOLINGPOWERBTU NUMBER(9,0),
DESCRIPTION CLOB
)
/
-- ADD KEYS FOR TABLE DATACENTER
ALTER TABLE DATACENTER ADD CONSTRAINT DATACENTERID PRIMARY KEY (DATACENTERID)
/
-- TABLE COMPONENT
CREATE TABLE COMPONENT(
COMPONENTID INTEGER NOT NULL,
DATACENTERID INTEGER,
FKCOMPONENTID INTEGER,
COMPONENTSTATSID INTEGER NOT NULL
)
/
-- ADD KEYS FOR TABLE COMPONENT
ALTER TABLE COMPONENT ADD CONSTRAINT COMPONENTID PRIMARY KEY (COMPONENTID)
/
-- CREATE RELATIONSHIPS SECTION -------------------------------------------------
ALTER TABLE COMPONENT ADD CONSTRAINT IS PART OF A FOREIGN KEY (DATACENTERID) REFERENCES DATACENTER (DATACENTERID)
/
ALTER TABLE COMPONENT ADD CONSTRAINT IS A SUBPART OF FOREIGN KEY (FKCOMPONENTID) REFERENCES COMPONENT (COMPONENTID)
/
Den Fehler-stack:
table DATACENTER created.
table DATACENTER altered.
table COMPONENT created.
table COMPONENT altered.
Error starting at line 39 in command:
ALTER TABLE COMPONENT ADD CONSTRAINT IS PART OF A FOREIGN KEY (DATACENTERID) REFERENCES DATACENTER (DATACENTERID)
Error report:
SQL Error: ORA-00902: invalid datatype
00902. 00000 - "invalid datatype"
*Cause:
*Action:
Error starting at line 42 in command:
ALTER TABLE COMPONENT ADD CONSTRAINT IS A SUBPART OF FOREIGN KEY (FKCOMPONENTID) REFERENCES COMPONENT (COMPONENTID)
Error report:
SQL Error: ORA-00902: invalid datatype
00902. 00000 - "invalid datatype"
*Cause:
*Action:
BEARBEITEN ich bearbeitet den code, weil ich sah, dass einige SQL-Anweisungen fehlen.
Kann ich das schema, wenn Sie wollen?
Die besten Wünsche
- Wieder: Sie sind mit ungültigen Namen für Ihre Einschränkungen (
IS PART OF A
undIS A SUBPART OF
). Müssen Sie NICHT verwenden Sie ein Leerzeichen in die constraint-Namen - Ja, das ist das problem. Danke!!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Einschränkung name
IS PART OF A
ist eine illegale Bezeichner (wegen der Leerzeichen).Müssen Sie entfernen Sie die Leerzeichen, z.B.
IS_PART_OF_A
:Bearbeiten
Ich erkannte auch, dass Ihr script nicht richtig beendet sind die einzelnen Aussagen. Es ist ein
;
(oder/
) fehlt nach dem ersten CREATE TABLE. Und die erstenALTER TABLE
ist nicht ordnungsgemäß beendet, so gut. Ich weiß nicht, ob das ein copy & paste Fehler, obwohl.Edit2:
Hier ist das komplette script mit den korrekten Namen, Erklärung der Kündigung und in der richtigen Reihenfolge:
datacenter
Tabelle erstellt wurde...