Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi [ACCESS] Defaultwert auf NULL setzen (https://www.delphipraxis.net/15175-%5Baccess%5D-defaultwert-auf-null-setzen.html)

Sanchez 23. Jan 2004 11:43


[ACCESS] Defaultwert auf NULL setzen
 
Mahlzeit zusammen,

Ich hab eine Access-DB in der die Definition eines Feldes fehlerhaft ist. Der Defaultwert des int-Feldes ist 0 sollte aber NULL sein. Ich kanns nicht händisch machen weils auf mehreren Test-DBs und einer Demo-DB beim Kunden passieren muss.

Deshalb muss es mit nem Alter Table gehen. Allerdings zieht der Befehl

SQL-Code:
ALTER TABLE Antriebsrahmen ALTER ar_LokID int NULL
offenbar nicht. Woran liegts?

grüße, daniel

Sanchez 25. Jan 2004 17:25

Re: [ACCESS] Defaultwert auf NULL setzen
 
Nochmal ne Info hinterher. Access liefert keinen SQL-Fehler nach diesem Befehl.
Es passiert einfach nix. Der Default-Wert des Feldes bleibt gleich.

Ist der Befehl grundsätzlich für den Kanal?

Robert_G 25. Jan 2004 18:00

Re: [ACCESS] Defaultwert auf NULL setzen
 
Wenn ich in Oracle bei einer Spalte die "NOT NULL" - Bedingung aufheben will, schreibe ich :
SQL-Code:
ALTER TABLE Antriebsrahmen modify AR_LOKID NULL;
Hatte sie nie diese Bedingung, ist das auch nicht nötig
-> wird sie bei einem INSERT nicht beschrieben ist sie halt leer.

Die Frage dabei ist nur wie weit sich MS-Jet an solche SQL Standards hält. :gruebel:

Sanchez 25. Jan 2004 18:18

Re: [ACCESS] Defaultwert auf NULL setzen
 
NOT NULL war die Spalte gar nie. Der Standardwert ist 0. Den hab ich unbeabsichtigt mal so gesetzt und habs erst viel später bemerkt. Jetzt soll ins Programm eine Updatefunktion rein, der den Standard-Wert auf NULL setzt.

Robert_G 25. Jan 2004 19:23

Re: [ACCESS] Defaultwert auf NULL setzen
 
Dann vielleicht so:
SQL-Code:
ALTER TABLE Antriebsrahmen modify AR_LOKID DEFAULT NULL
... ohne "int"

Sanchez 25. Jan 2004 19:46

Re: [ACCESS] Defaultwert auf NULL setzen
 
Wenn dann so
SQL-Code:
ALTER TABLE Antriebsrahmen ALTER AR_LOKID DEFAULT NULL
Modify gibts bei Access nämlich nicht. Werds morgen mal versuchen.

grüße, daniel

Sanchez 26. Jan 2004 06:50

Re: [ACCESS] Defaultwert auf NULL setzen
 
Funktioniert leider weder mit Modify noch mit Alter. Beides liefert einen SQL-Fehler.
:gruebel:

Sanchez 26. Jan 2004 09:26

Re: [ACCESS] Defaultwert auf NULL setzen
 
Problem gelöst. Zwar ziemlich umständlich, aber damit kann ich leben, weil der Befehl nur einmal ausgeführt wird.

SQL-Code:
UPDATE Antriebsrahmen set ar_LokID1 = ar_LokID;
DROP INDEX ar_LokID on Antriebsrahmen;
ALTER TABLE Antriebsrahmen DROP COLUMN ar_LokID;
ALTER TABLE Antriebsrahmen ADD COLUMN ar_LokID int NULL;
UPDATE Antriebsrahmen set ar_LokID = ar_LokID1;
ALTER TABLE Antriebsrahmen DROP COLUMN ar_LokID1;
create index ar_LokID on Antriebsrahmen (ar_LokID);
UPDATE Antriebsrahmen set ar_LokID = NULL where ar_LokID = 0;
Weil ich das Umbenennen eines Feldes auch nicht hinbekommen habe, kopier ich das Feld einfach 2 mal.

Trotzdem Dank für die Ansätze

grüße, daniel


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz