Eu quero alterar uma coluna da tabela para ser anulável. Eu tenho usado:
ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL
Isso dá um erro em Modify
. Qual é a sintaxe correta?
Eu quero alterar uma coluna da tabela para ser anulável. Eu tenho usado:
ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL
Isso dá um erro em Modify
. Qual é a sintaxe correta?
Respostas:
para usuários do Oracle Database 10g:
alter table mytable modify(mycolumn null);
Você recebe "ORA-01735: opção ALTER TABLE inválida" ao tentar o contrário
ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;
No PostgresQL é:
ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;
Embora eu não saiba qual RDBMS você está usando, você provavelmente precisará fornecer toda a especificação da coluna, e não apenas dizer que agora deseja que seja anulável. Por exemplo, se estiver atualmente INT NOT NULL
, você deve emitir ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT
.
Null
| NOT NULL
não for especificado, a coluna será anulável.
Como outros observaram, a sintaxe precisa do comando varia entre os diferentes tipos de DBMS. A sintaxe que você usa funciona no 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;
Isso funcionará para você.
Se você deseja alterar uma coluna não nula para permitir nulo, não é necessário incluir a cláusula not null. Porque as colunas padrão não são nulas.
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT;
Isso depende do mecanismo do SQL que você está usando, no Sybase seu comando funciona bem:
ALTER TABLE Merchant_Pending_Functions
Modify NumberOfLocations NULL;
Oráculo
ALTER TABLE Merchant_Pending_Functions MODIFY([column] NOT NULL);