Modifier une colonne pour être annulable


318

Je souhaite modifier une colonne de table pour qu'elle puisse être annulée. J'ai utilisé:

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL

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


7
S'il vous plaît poster le message d'erreur à l' avenir
a'r

1
J'ai supprimé la balise SQL Server car il semble que cela soit devenu un service gratuit pour tous.
Martin Smith

Réponses:


514

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

ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL

Remplacez INTpar votre type de données réel.


43

pour les utilisateurs d'Oracle Database 10g:

alter table mytable modify(mycolumn null);

Vous obtenez "ORA-01735: option ALTER TABLE invalide" lorsque vous essayez autrement

ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;

Cool, vous n'avez pas besoin de spécifier le type de données, juste "null" pour le rendre nullable.
Gabe Halsmer

41

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.


29

En PostgresQL c'est:

ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;

5

Bien que je ne sache pas quel SGBDR vous utilisez, vous devez probablement donner la spécification de la colonne entière, pas seulement dire que vous voulez maintenant qu'il soit annulable. Par exemple, si c'est actuellement INT NOT NULL, vous devez émettre ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT.


Ceci est une réponse correcte et descriptive, il suffit donc de clarifier si Null| NOT NULLn'est pas spécifié, la colonne sera nullable.
Hamid Heydarian

4

Comme d'autres l'ont observé, la syntaxe précise de la commande varie selon les différentes versions du 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>

0

Pour HSQLDB:

ALTER TABLE tableName ALTER COLUMN columnName SET NULL;

0
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT null;

Cela fonctionnera pour vous.

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

ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT;

0

Cela dépend du moteur SQL que vous utilisez, dans Sybase, votre commande fonctionne correctement:

ALTER TABLE Merchant_Pending_Functions 
Modify NumberOfLocations NULL;

0

Oracle

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


Cette réponse apporte-t-elle quelque chose de nouveau par rapport à la réponse de @ IgorS ? Et qu'est-ce que cela signifie SQL_SCRIPT?
jpeg
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.