1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Oracle 9: ORA-00984: Spalte hier nicht zulässig

Dieses Thema im Forum "Relationale Datenbanksysteme" wurde erstellt von javas, 19. Juli 2010.

  1. javas

    javas Mitglied

    Hallo zusammen

    Ich habe folgendes Problem:
    Ich will mit folgendem Query eine neue Tabelle erstellen:
    Code (SQL):
    1. CREATE TABLE testtable(
    2. id INT DEFAULT testtable_id_seq.NEXTVAL PRIMARY KEY,
    3. name VARCHAR(100) NOT NULL
    4. );
    Nun erhalte ich folgenden Fehler:
    16:03:22 [CREATE - 0 row(s), 0.000 secs] [Error Code: 984, SQL State: 42000] ORA-00984: Spalte hier nicht zulässig

    Die Sequenz existiert!

    Kann mir jemand helfen?
    Der Fehler ist auf der der 2. Zeile!

    Besten Dank
     
    Zuletzt von einem Moderator bearbeitet: 23. Mai 2014
  2. Steiner_B

    Steiner_B Erfahrenes Mitglied

    Bin zwar kein Oracle-Mensch, aber kann es sein das der Datentyp statt "int" "number" heißen muss?
     
  3. Yaslaw

    Yaslaw n/a Moderator

    Dass man eine Sequenz als Default-Value setz hab ich so noch nie gemacht. Wir lösten das jeweils über einen Trigger.

    Hab da im Internet auch was gefunden dass genau dein Fehler ausgibt
    http://thinkoracle.blogspot.com/2006/02/oracle-sequences.html

    Achja, bitte in Zukunft deine SQLs in [code=sql]dein Code[/code] setzen....
     
    Zuletzt von einem Moderator bearbeitet: 23. Mai 2014
  4. dbwizard

    dbwizard Erfahrenes Mitglied

    Hallo,

    Wie Yaslaw ja schon geschrieben hat : Dies geht nicht so. Du musst das Atrtribut als Number erstellen und anschliessend z.b per Trigger füllen lassen.

    Also etw aso :

    Code (SQL):
    1. CREATE TABLE testtable
    2.     (id                             NUMBER NOT NULL,
    3.     name                           VARCHAR2(100 BYTE) NOT NULL
    4.   ,
    5.   CONSTRAINT TESTTABLE_PK
    6.   PRIMARY KEY (id)
    7.   USING INDEX
    8.   TABLESPACE  ruma_index)
    9.   TABLESPACE  ruma_data
    10.   NOPARALLEL
    11.   LOGGING
    12.   MONITORING
    13. /
    14.  
    15.  
    16. CREATE OR REPLACE TRIGGER trig_Testtable_get_pk
    17.  BEFORE
    18.   INSERT
    19.  ON TESTTABLE
    20. REFERENCING NEW AS NEW OLD AS OLD
    21.  FOR EACH ROW
    22. BEGIN
    23.     SELECT testtable_id_seqT.NEXTVAL
    24.         INTO :NEW.ID
    25.         FROM DUAL;
    26. END trig_Testtable_get_pk;
    27. /
    Gruss
     
    Zuletzt von einem Moderator bearbeitet: 23. Mai 2014
  5. javas

    javas Mitglied

    Hallo zusammen
    Danke für eure Antworten!
    Ich werde morgen mal probieren, ob dies für meinen Anwendungszweck geeignet ist!
    Freundliche Grüsse
    javas
     
  6. javas

    javas Mitglied

    Leider funktioniert das so nicht! Beim Erstellen des Triggers erhalte ich folgenden Fehler:
    Fehlender IN- oder OUT-Parameter auf Index:: 1
    Wisst ihr was das Problem sein könnte?
     

Diese Seite empfehlen