[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.934
    Hallo Daniel,

    beim Anlegen einer Tabelle ist ein Default-Wert nicht erforderlich, da zu diesem Zeitpunkt in der Tabelle noch keine Sätze vorhanden sind.

    Beim Hinzufügen einer Spalte zu einer bestehenden Tabelle wird davon ausgegangen, dass in der Tabelle bereits Sätze angelegt wurden. Da bei "NOT NULL" NULL als Unterlassungswert nicht zulässig ist, muss ein Defaultwert angegeben werden, damit die bereits bestehenden Sätze in der neuen Spalte mit einem Wert initialisiert werden können.

    Aus diesem Grund muss beim Alter Table immer NOT NULL WITH DEFAULT angegeben werden.

    Wenn Du übrigens über die Hilfe die Detail-Nachrichten von SQL0109 angeschaut hättest oder über die Messagefile den Detail-Text von Message-Id SQL0109 angezeigt hättest, hättest Du den folgenden Kommentar sehen müssen:
    -- Die Klausel NOT NULL ist in der Definition einer Spalte, die zu einer Tabelle hinzugefügt wird, nicht zulässig, es sei denn, es ist ein Standardwert angegeben.
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  2. #2
    Registriert seit
    Dec 2007
    Beiträge
    4

    ALTER TABLE ... NOT NULL

    Hallo Birgitta,

    Vielen Dank für die Antwort.

    Dass ein alter table add column mit NOT NULL nicht einfach auf eine "gefüllte" Tabelle losgelassen werden kann ist einleuchtend. In diesem Fall wird jedoch der Alter Table auf ein "leere" Tabelle ausgeführt.

    Da das Verhalten bei Inserts mit NOT NULL WITH DEFAULT anderst ist als ohne Standartwerte kann ich die Option leider nicht anwenden (etwas komplexerer Hintergrund).

    Wie gesagt kann ich folgende Beispielstatements anwenden:
    1. alter table testtable add col1 varchar(50)
    2. alter table testtable alter col1 set not null

    Und das fehlerfrei ...

    Elegant wäre es natürlich, wenn das alles in einem Statement (z. Bsp. "alter table testtable add col1 varchar(50) not null") definiert werden kann. Kann ich somit davon ausgehen, dass die AS/400 diese Option "noch" nicht unterstützt.

    Viele Grüsse

    Daniel

Similar Threads

  1. Tabelle mit ALTER TABLE ändern - ohne Datentransfer
    By Matthias182 in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 03-12-07, 13:05
  2. Darstellung der Null im LPEX-Editor (WDSC)
    By Ewald in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 25-01-07, 08:52
  3. NOT NULL WITH DEFAULT
    By deni87991 in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 04-08-06, 11:32
  4. Zugriff auf Serielle Schnittstelle aus RPG/VARPG
    By Kampi4 in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 25-11-05, 08:37
  5. Embedded SQL - Datenbankoptionen in VARPG
    By woki in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 13-04-04, 13:09

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •