Alterar una columna para que sea anulable


318

Quiero alterar una columna de la tabla para que sea anulable. He usado:

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL

Esto da un error en Modify. ¿Cual es la sintaxis correcta?


77
Por favor, publique el mensaje de error en el futuro
a'r

1
Eliminé la etiqueta de SQL Server, ya que parece que se ha convertido en una versión general gratuita para todos.
Martin Smith

Respuestas:


514

Suponiendo SQL Server(según sus preguntas anteriores):

ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL

Reemplace INTcon su tipo de datos real.


43

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;

Genial, no tiene que especificar el tipo de datos, solo "nulo" para que sea anulable.
Gabe Halsmer

41

Si esta fuera la sintaxis de MySQL, el tipo habría faltado, como señalan algunas otras respuestas. La sintaxis correcta de MySQL habría sido:

ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL

Publicar aquí para mayor claridad para los usuarios de MySQL.


29

En PostgresQL es:

ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;

5

Aunque no sé qué RDBMS está utilizando, probablemente deba proporcionar la especificación de la columna completa, no solo decir que ahora desea que sea anulable. Por ejemplo, si es actualmente INT NOT NULL, debe emitir ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT.


Esta es una respuesta correcta y descriptiva, así que solo aclara si Null| NOT NULLno se especifica, la columna será anulable.
Hamid Heydarian

4

Como otros han observado, la sintaxis precisa para el comando varía según los diferentes tipos de DBMS. La sintaxis que usa 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>

0

Para HSQLDB:

ALTER TABLE tableName ALTER COLUMN columnName SET NULL;

0
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT null;

Esto funcionará para ti.

Si desea cambiar una columna no nula para permitir nula, no es necesario incluir una cláusula no nula. Porque las columnas predeterminadas no se vuelven nulas.

ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT;

0

Esto depende de qué motor SQL esté utilizando, en Sybase su comando funciona bien:

ALTER TABLE Merchant_Pending_Functions 
Modify NumberOfLocations NULL;

0

Oráculo

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


¿Esta respuesta trae algo nuevo con respecto a la respuesta de @ IgorS ? ¿Y qué significa SQL_SCRIPT?
jpeg
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.