sentencias - sql ejemplos
Alterar una columna para que sea nullable. (7)
Quiero alterar una columna de tabla para que sea nullable. He utilizado:
ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL
Esto da un error en Modify
. ¿Cual es la sintaxis correcta?
Asumiendo SQL Server
(basado en sus preguntas anteriores):
ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL
Reemplace INT
con su tipo de datos real.
Aunque no sé qué RDBMS está utilizando, es probable que tenga que dar toda la especificación de la columna, no solo decir que ahora quiere que sea anulable. Por ejemplo, si actualmente es INT NOT NULL
, debe emitir ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT
.
Como han observado otros, la sintaxis precisa para el comando varía según los diferentes tipos de DBMS. La sintaxis que usas funciona en 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>
En PostgresQL es:
ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;
Para HSQLDB:
ALTER TABLE tableName ALTER COLUMN columnName SET NULL;
Si esta fuera la sintaxis de MySQL, el tipo habría desaparecido, como señalan otras respuestas. La sintaxis correcta de MySQL habría sido:
ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL
Publicar aquí para mayor claridad a los usuarios de MySQL.
para usuarios de Oracle Database 10g:
alter table mytable modify(mycolumn null);
Obtiene "ORA-01735: opción ALTER TABLE no válida" cuando intenta lo contrario
ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;