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?
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.
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;
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.
Dans PostgresQL c'est:
ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;
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
.
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>
Pour HSQLDB:
ALTER TABLE tableName ALTER COLUMN columnName SET NULL;
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;