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?

RAM
la source
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.

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

djjeck
la source
29

En PostgresQL c'est:

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

Hammerite
la source
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>
APC
la source
0

Pour HSQLDB:

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

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

ALTER TABLE Merchant_Pending_Functions 
Modify NumberOfLocations NULL;
ZORRO_BLANCO
la source
0

Oracle

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

Rodrigo Itursarry
la source
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