Ändern einer Spalte als nullwertfähig


318

Ich möchte eine Tabellenspalte so ändern, dass sie nullbar ist. Ich habe benutzt:

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL

Dies gibt einen Fehler bei Modify. Was ist die richtige Syntax?


7
Bitte posten Sie die Fehlermeldung in Zukunft
Uhr

1
Ich habe das SQL Server-Tag entfernt, da es anscheinend für alle allgemein kostenlos ist.
Martin Smith

Antworten:


513

Angenommen SQL Server(basierend auf Ihren vorherigen Fragen):

ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL

Ersetzen Sie INTdurch Ihren tatsächlichen Datentyp.


43

für Benutzer von Oracle Database 10g:

alter table mytable modify(mycolumn null);

Sie erhalten "ORA-01735: ungültige ALTER TABLE-Option", wenn Sie es anders versuchen

ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;

Cool, Sie müssen den Datentyp nicht angeben, sondern nur "null", um ihn nullbar zu machen.
Gabe Halsmer

41

Wenn dies MySQL-Syntax wäre, hätte der Typ gefehlt, wie einige andere Antworten zeigen. Die korrekte MySQL-Syntax wäre gewesen:

ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL

Hier zur Klarheit für MySQL-Benutzer posten.


29

In PostgresQL ist es:

ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;

5

Obwohl ich nicht weiß, welches RDBMS Sie verwenden, müssen Sie wahrscheinlich die gesamte Spaltenspezifikation angeben und nicht nur sagen, dass Sie jetzt möchten, dass es nullwertfähig ist. Zum Beispiel, wenn es aktuell ist INT NOT NULL, sollten Sie ausstellen ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT.


Dies ist eine korrekte und beschreibende Antwort. Klären Sie also nur, ob Null| NOT NULLWird nicht angegeben, ist die Spalte nullwertfähig.
Hamid Heydarian

4

Wie andere beobachtet haben, variiert die genaue Syntax für den Befehl in verschiedenen DBMS-Varianten. Die von Ihnen verwendete Syntax funktioniert in Oracle:

SQL> desc MACAddresses
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COMPUTER                                           NUMBER
 MACADDRESS                                         VARCHAR2(12)
 CORRECTED_MACADDRESS                      NOT NULL VARCHAR2(17)

SQL> alter table MACAddresses
  2       modify corrected_MACAddress null
  3  /

Table altered.

SQL> desc MACAddresses
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COMPUTER                                           NUMBER
 MACADDRESS                                         VARCHAR2(12)
 CORRECTED_MACADDRESS                               VARCHAR2(17)

SQL>

0

Für HSQLDB:

ALTER TABLE tableName ALTER COLUMN columnName SET NULL;

0
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT null;

Dies wird für Sie funktionieren.

Wenn Sie eine Nicht-Null-Spalte ändern möchten, um Null zuzulassen, müssen Sie keine Nicht-Null-Klausel einfügen. Weil Standardspalten nicht null werden.

ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT;

0

Dies hängt davon ab, welche SQL Engine Sie verwenden. In Sybase funktioniert Ihr Befehl einwandfrei:

ALTER TABLE Merchant_Pending_Functions 
Modify NumberOfLocations NULL;

0

Orakel

ALTER TABLE Merchant_Pending_Functions MODIFY([column] NOT NULL);


Bringt diese Antwort etwas Neues in Bezug auf die Antwort von @ IgorS ? Und wofür steht SQL_SCRIPT?
JPEG
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.