Alterando uma coluna para ser anulável


318

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?


7
Por favor, postar a mensagem de erro no futuro
a'r

1
Eu removi a tag do SQL Server, pois parece que isso se tornou gratuito para todos.
Martin Smith

Respostas:


514

Supondo SQL Server(com base em suas perguntas anteriores):

ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL

Substitua INTpelo seu tipo de dados real.


43

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;

Legal, você não precisa especificar o tipo de dados, apenas "nulo" para torná-lo anulável.
Gabe Halsmer

41

Se essa fosse a sintaxe do MySQL, o tipo estaria faltando, como algumas outras respostas apontam. A sintaxe correta do MySQL teria sido:

ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL

Publicando aqui para maior clareza aos usuários do MySQL.


29

No PostgresQL é:

ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;

5

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.


Esta é uma resposta correta e descritiva, portanto, basta esclarecer se Null| NOT NULLnão for especificado, a coluna será anulável.
Hamid Heydarian

4

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>

0

Para HSQLDB:

ALTER TABLE tableName ALTER COLUMN columnName SET NULL;

0
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;

0

Isso depende do mecanismo do SQL que você está usando, no Sybase seu comando funciona bem:

ALTER TABLE Merchant_Pending_Functions 
Modify NumberOfLocations NULL;

0

Oráculo

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


Esta resposta traz algo de novo em relação à resposta da @ IgorS ? E o que SQL_SCRIPTsignifica?
jpeg
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.