2010-08-24 12 views
197

Ich möchte eine Tabellenspalte so ändern, dass sie nullfähig ist. Ich habe verwendet:Ändern einer Spalte, die nullfähig sein soll

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL 

Daraus ergibt sich ein Fehler bei Modify. Was ist die korrekte Syntax?

+6

Bitte senden Sie die Fehlermeldung in Zukunft –

+1

ich die SQL Server-Tag entfernt haben, da es so aussieht eine allgemeine kostenlos für alle geworden ist. –

Antwort

329

Unter der Annahme, SQL Server (basierend auf Ihren vorherigen Fragen):

ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL 

ersetzen INT mit Ihrem tatsächlichen Datentyp.

5

Obwohl ich nicht weiß, welche RDBMS Sie verwenden, müssen Sie wahrscheinlich die gesamte Spaltenspezifikation angeben, nicht nur sagen, dass Sie jetzt wollen, dass es Nullable sein kann. Zum Beispiel, wenn es derzeit INT NOT NULL ist, sollten Sie ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT ausgeben.

+0

Dies ist eine korrekte und beschreibende Antwort, also klärt nur, ob 'Null' | 'NOT NULL' ist nicht angegeben, die Spalte ist nullfähig. –

4

Wie andere beobachtet haben, variiert die genaue Syntax für den Befehl zwischen verschiedenen Varianten von DBMS. Die Syntax verwenden Sie 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> 
37

für Oracle Database 10g-Benutzer:

alter table mytable modify(mycolumn null); 

Sie erhalten "ORA-01735: ungültiger ALTER TABLE-Option", wenn Sie sonst versuchen

ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL; 
+0

Cool, Sie müssen nicht den Datentyp angeben, nur "null", um es Nullwert zu machen. –

29

Wenn dies die MySQL-Syntax wäre, würde der Typ fehlen, wie einige andere Antworten darauf hinweisen. Correct MySQL Syntax wäre gewesen:

ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL 

Posting hier für Klarheit zu MySQL-Benutzer.

7

In PostgresQL es ist:

ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL; 
Verwandte Themen