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?
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?
Respuestas:
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;
En PostgresQL es:
ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;
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
.
Null
| NOT NULL
no se especifica, la columna será anulable.
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>
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;
Esto depende de qué motor SQL esté utilizando, en Sybase su comando funciona bien:
ALTER TABLE Merchant_Pending_Functions
Modify NumberOfLocations NULL;
Oráculo
ALTER TABLE Merchant_Pending_Functions MODIFY([column] NOT NULL);
SQL_SCRIPT
?