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?
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?
Réponses:
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;
En 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 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
.
Null
| NOT NULL
n'est pas spécifié, la colonne sera nullable.
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>
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;
Cela dépend du moteur SQL que vous utilisez, dans Sybase, votre commande fonctionne correctement:
ALTER TABLE Merchant_Pending_Functions
Modify NumberOfLocations NULL;
Oracle
ALTER TABLE Merchant_Pending_Functions MODIFY([column] NOT NULL);
SQL_SCRIPT
?