ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
5967
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    javas ist offline Mitglied
    Registriert seit
    Feb 2010
    Beiträge
    21
    Hallo zusammen

    Ich habe folgendes Problem:
    Ich will mit folgendem Query eine neue Tabelle erstellen:
    Code sql:
    1
    2
    3
    4
    
    CREATE TABLE testtable(
    id INT DEFAULT testtable_id_seq.NEXTVAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL
    );

    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
    Geändert von javas (20.07.10 um 10:35 Uhr)
     

  2. #2
    Steiner_B ist offline Mitglied Platin
    Registriert seit
    Mar 2004
    Ort
    Wien
    Beiträge
    573
    Bin zwar kein Oracle-Mensch, aber kann es sein das der Datentyp statt "int" "number" heißen muss?
     

  3. #3
    Avatar von Yaslaw
    Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    7.046
    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...sequences.html

    -- Won't work:
    Code sql:
    1
    
    CREATE TABLE MyTable (seq_id NUMBER(1) DEFAULT rollover_seq.NEXTVAL);
    ORA-00984: column not allowed here

    -- Will work:
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    
    CREATE TABLE MyTable (seq_id NUMBER(1));
     
    CREATE OR REPLACE TRIGGER trig_seq BEFORE INSERT ON MyTable
    FOR EACH ROW
    BEGIN
    SELECT rollover_seq.NEXTVAL INTO :NEW.seq_id FROM dual;
    END;
    Achja, bitte in Zukunft deine SQLs in [SQL]dein Code[/SQL] setzen....
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements¨in PHP-Code kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit Code-Tags verwenden

  4. #4
    dbwizard ist offline Mitglied Brokat
    Registriert seit
    May 2007
    Ort
    Zürich
    Beiträge
    288
    Zitat Zitat von javas Beitrag anzeigen
    Hallo zusammen
    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
    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
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    
     
    CREATE TABLE testtable
        (id                             NUMBER NOT NULL,
        name                           VARCHAR2(100 BYTE) NOT NULL
      ,
      CONSTRAINT TESTTABLE_PK
      PRIMARY KEY (id)
      USING INDEX
      TABLESPACE  ruma_index)
      TABLESPACE  ruma_data
      NOPARALLEL
      LOGGING
      MONITORING
    /
     
     
    CREATE OR REPLACE TRIGGER trig_Testtable_get_pk
     BEFORE
      INSERT
     ON TESTTABLE
    REFERENCING NEW AS NEW OLD AS OLD
     FOR EACH ROW
    BEGIN
        SELECT testtable_id_seqT.NEXTVAL
            INTO :NEW.ID
            FROM DUAL;
    END trig_Testtable_get_pk;
    /

    Gruss
    Geändert von dbwizard (19.07.10 um 17:20 Uhr)
     

  5. #5
    javas ist offline Mitglied
    Registriert seit
    Feb 2010
    Beiträge
    21
    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. #6
    javas ist offline Mitglied
    Registriert seit
    Feb 2010
    Beiträge
    21
    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?
     

Thema nicht erledigt

Ähnliche Themen

  1. Abfrage von CLOB Spalte aus einer Oracle DB
    Von Templorials im Forum PHP
    Antworten: 0
    Letzter Beitrag: 24.07.08, 11:44
  2. [Oracle] Doppelte Einträge in extra Spalte
    Von Dr_Doom im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 24.10.07, 08:14
  3. oracle; Spalte nur anzeigen, wenn was drinnsteht
    Von binfgi im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 17.08.06, 10:44
  4. Oracle 9.2i, Begrenzung der Anzahl Zeichen pro Spalte
    Von tplanitz im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 12.08.06, 12:14
  5. OleAut Datum nicht zulässig?
    Von flotschie im Forum .NET Datenverwaltung
    Antworten: 0
    Letzter Beitrag: 19.09.05, 10:27