2010-08-24 12 views
197

Chcę zmienić kolumnę tabeli, aby być zerowalne. Użyłem:Zmiana kolumna być nullable

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL 

Daje to błąd przy Modify. Jaka jest prawidłowa składnia?

+6

Proszę opublikować komunikat o błędzie w przyszłości –

+1

Usunąłem tag SQL Server, jak wygląda ten stał się ogólnie za darmo dla wszystkich. –

Odpowiedz

329

Zakładając SQL Server (na podstawie wcześniejszych pytań):

ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL 

Wymień INT rzeczywistą typu danych.

5

Chociaż nie wiem, jakiego RDBMS używasz, prawdopodobnie powinieneś podać całą specyfikację kolumny, a nie tylko powiedzieć, że teraz chcesz ją unieważnić. Na przykład, jeśli obecnie jest to INT NOT NULL, powinieneś wydać ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT.

+0

To jest poprawna i opisowa odpowiedź, więc wystarczy wyjaśnić, czy 'Null' | "NOT NULL" nie jest określony, kolumna będzie zerowalna. –

4

Jak zauważyli inni, dokładna składnia polecenia różni się w zależności od smaków DBMS. Składnia korzystania z dzieł w 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

Oracle użytkowników Database 10g:

alter table mytable modify(mycolumn null); 

dostać "ORA-01735: nieprawidłowy ALTER opcja TABELA" podczas próby inaczej

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

Cool, nie musisz określać typu danych, po prostu "null", aby uczynić go zerowalnym. –

29

Jeśli była to składnia MySQL, typ nie byłby dostępny, jak wskazują niektóre inne odpowiedzi. Poprawna składnia MySQL byłby:

ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL 

zamieszczaniu tu dla jasności dla użytkowników MySQL.

7

w PostgreSQL to:

ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;