FirebirdSQL Datenbanl Spalte von Not Null auf Null setzen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Benutzeravatar
Levario
Beiträge: 101
Registriert: Mo 1. Sep 2014, 14:32
OS, Lazarus, FPC: Windows 10 Pro Laptop (Lazarus 3.0.0 FPC 3.2.2)
CPU-Target: 64 Bit
Wohnort: Deutschland / NRW

FirebirdSQL Datenbanl Spalte von Not Null auf Null setzen

Beitrag von Levario »

Hallo zusammen ich habe eine Tabelle in Firebird SQL erstellt und möchte diese in einer Spalte von Not Null auf Null setzen. Im Netz habe ich dies nur anders herum gefunden für SQL Datenbanken nicht explizit für Firebird SQL. Ich verwende eine Firebird Datenbank in der Version 3.0.

Ich habe es bislang so probiert:

Code: Alles auswählen

// Beispiel
ALTER TABLE [Table] ALTER COLUMN [Column] INTEGER NOT NULL
// Meine Anpassung
ALTER TABLE MEDICALVALUES ALTER COLUMN SUGAR1 VARCHAR(10) 
Leider ohne Erfolg - Kann hier jemand helfen?
Der Weg ist das Ziel... Aber bitte nicht vergessen los zu laufen :).

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: FirebirdSQL Datenbanl Spalte von Not Null auf Null setzen

Beitrag von af0815 »

Grundlegend machst du das nicht was als Überschrift steht.

Du machst genaugenommen eine Änderung der Struktur, die so nicht gehen kann, da die DB den Wert von integer nicht implizit nach varchar ändern kann. Da wirst du mit einer Zwischentabelle arbeiten müssen.

Du kann die integerspalte normalerweise über das alter Kommando von NULL auf NOT NULL umsetzen. Das würde ich im ersten Schritt machen, dann ein Spalte hinzufügen, dann die Werte in die neue Spalte transportieren und dann kannst du versuchen die alte Spalte zu löschen, oder als tote Spalte mitlaufen zu lassen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Levario
Beiträge: 101
Registriert: Mo 1. Sep 2014, 14:32
OS, Lazarus, FPC: Windows 10 Pro Laptop (Lazarus 3.0.0 FPC 3.2.2)
CPU-Target: 64 Bit
Wohnort: Deutschland / NRW

Re: FirebirdSQL Datenbanl Spalte von Not Null auf Null setzen

Beitrag von Levario »

Danke erst einmal ich ändere dann mal die Datenbank :( durch löschen und neu anlegen ich dachte das könnte ich verhindern
Der Weg ist das Ziel... Aber bitte nicht vergessen los zu laufen :).

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: FirebirdSQL Datenbanl Spalte von Not Null auf Null setzen

Beitrag von af0815 »

Wie gesagt, es geht 'Inplace' bei den meisten Datenbanken. Ich kenne es deswegen, weil ich bei einer Produktiven DB nicht so einfach mal die DB löschen kann, weil es ZB. Referenzen zwischen den Tabellen gibt. Dann kannst du nur Spalten hinzufügen und die Daten transformiert in die neue Spalte bringen.

Manche DB Verwaltungstools machen sowas im Hintergrund für den Benutzer, haben aber auch dieselben Grenzen. Wenn Schlüssel verletzt werden, dann geht gar nichts. Das ist beliebt, wenn du eine NULL Spalte in NOT NULL wandeln willst. Klassiker ist, das du Null-Werte in der DB-Spalte hast und es darf auch dieser Null-Wert nur ein einziges Mal in der Spalte auftauchen. :-) Ist wie gesagt ein Klassiker. Umgekehrt ist es einfacher.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten