Chcę zmienić kolumnę tabeli, aby była zerowalna. Używałem:
ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL
To daje błąd w Modify
. Jaka jest poprawna składnia?
Chcę zmienić kolumnę tabeli, aby była zerowalna. Używałem:
ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL
To daje błąd w Modify
. Jaka jest poprawna składnia?
Odpowiedzi:
dla użytkowników bazy danych Oracle 10g:
alter table mytable modify(mycolumn null);
Otrzymujesz „ORA-01735: nieprawidłowa opcja ALTER TABLE”, gdy próbujesz inaczej
ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;
W PostgresQL jest to:
ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;
Chociaż nie wiem, jakiego RDBMS używasz, prawdopodobnie musisz podać całą specyfikację kolumny, a nie tylko powiedzieć, że chcesz, aby była zerowalna. Na przykład, jeśli jest obecnie INT NOT NULL
, powinieneś go wydać ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT
.
Null
| NOT NULL
nie jest określony, kolumna będzie zerowa.
Jak zauważyli inni, dokładna składnia polecenia różni się w zależności od wersji DBMS. Używana składnia działa 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>
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT null;
To zadziała dla ciebie.
Jeśli chcesz zmienić kolumnę inną niż null, aby zezwolić na wartość null, nie musisz dołączać klauzuli not null. Ponieważ domyślne kolumny nie są puste.
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT;
Zależy to od używanego silnika SQL, w Sybase twoje polecenie działa dobrze:
ALTER TABLE Merchant_Pending_Functions
Modify NumberOfLocations NULL;
Wyrocznia
ALTER TABLE Merchant_Pending_Functions MODIFY([column] NOT NULL);