web-dev-qa-db-fra.com

Modifier une colonne pour qu'elle puisse être annulée

Je veux modifier une colonne de table pour pouvoir être nullable. J'ai utilisé: 

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL

Cela donne une erreur à Modify. Quelle est la syntaxe correcte?

246
Ram

En supposant que SQL Server (basé sur vos questions précédentes):

ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL

Remplacez INT par votre type de données actuel.

410
Quassnoi

pour les utilisateurs d'Oracle Database 10g:

alter table mytable modify(mycolumn null);

Vous obtenez "ORA-01735: Option ALTER TABLE non valide" lorsque vous essayez sinon

ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;
41
Igor S.

S'il s'agissait de la syntaxe MySQL, le type aurait été manquant, comme le soulignent d'autres réponses… .. La syntaxe correcte de MySQL aurait été:

ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL

Publier ici pour plus de clarté pour les utilisateurs de MySQL.

35
djjeck

Dans PostgresQL c'est:

ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;
17
Paul LeBeau

Bien que je ne sache pas quel SGBDR vous utilisez, vous devez probablement spécifier la spécification de la colonne complète, et ne pas simplement dire que vous voulez maintenant qu'il soit annulable. Par exemple, s'il s'agit actuellement de INT NOT NULL, vous devez émettre ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT.

5
Hammerite

Comme d'autres l'ont observé, la syntaxe précise de la commande varie selon les types de SGBD. La syntaxe que vous utilisez fonctionne dans 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>
4
APC

Pour HSQLDB:

ALTER TABLE tableName ALTER COLUMN columnName SET NULL;
0
Libor B.
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT null;

Cela fonctionnera pour vous.

Si vous souhaitez modifier une colonne non null pour autoriser la valeur null, inutile d'inclure la clause not null Parce que les colonnes par défaut ne sont pas nulles.

ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT;
0
chamzz.dot