Ä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?

RAM
quelle
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.

Quassnoi
quelle
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;
Igor S.
quelle
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.

djjeck
quelle
29

In PostgresQL ist es:

ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;
Paul LeBeau
quelle
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.

Hammerit
quelle
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>
APC
quelle
0

Für HSQLDB:

ALTER TABLE tableName ALTER COLUMN columnName SET NULL;
Libor B.
quelle
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;
chamzz.dot
quelle
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;
ZORRO_BLANCO
quelle
0

Orakel

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

Rodrigo Itursarry
quelle
Bringt diese Antwort etwas Neues in Bezug auf die Antwort von @ IgorS ? Und wofür steht SQL_SCRIPT?
JPEG