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?

RAM
fonte
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.

Quassnoi
fonte
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;
Igor S.
fonte
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.

djjeck
fonte
29

No PostgresQL é:

ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;
Paul LeBeau
fonte
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.

Hammerite
fonte
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>
APC
fonte
0

Para HSQLDB:

ALTER TABLE tableName ALTER COLUMN columnName SET NULL;
Libor B.
fonte
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;
chamzz.dot
fonte
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;
ZORRO_BLANCO
fonte
0

Oráculo

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

Rodrigo Itursarry
fonte
Esta resposta traz algo de novo em relação à resposta da @ IgorS ? E o que SQL_SCRIPTsignifica?
jpeg