Modificare una colonna per renderla nulla


318

Voglio modificare una colonna della tabella per renderla nulla. Ho usato:

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL

Questo dà un errore a Modify. Qual è la sintassi corretta?


7
Si prega di inviare il messaggio di errore in futuro
— a'r

1
Ho rimosso il tag SQL Server poiché sembra che questo sia diventato un servizio gratuito per tutti.
— Martin Smith,

Risposte:


514

Supponendo SQL Server(in base alle domande precedenti):

ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL

Sostituisci INTcon il tuo tipo di dati effettivo.


43

per utenti Oracle Database 10g:

alter table mytable modify(mycolumn null);

Ottieni "ORA-01735: opzione ALTER TABLE non valida" quando provi diversamente

ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;

Fantastico, non devi specificare il tipo di dati, solo "null" per renderlo nullable.
— Gabe Halsmer,

41

Se questa fosse la sintassi di MySQL, il tipo sarebbe mancante, come sottolineato da altre risposte. La sintassi corretta di MySQL sarebbe stata:

ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL

Pubblicare qui per chiarezza per gli utenti MySQL.


29

In PostgresQL è:

ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;

5

Anche se non so quale RDBMS stai usando, probabilmente dovrai fornire la specifica dell'intera colonna, non solo dire che ora vuoi che sia nullable. Ad esempio, se è attualmente INT NOT NULL, è necessario emettere ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT.


Questa è una risposta corretta e descrittiva, quindi basta chiarire se Null| NOT NULLnon è specificato, la colonna sarà nullable.
— Hamid Heydarian,

4

Come altri hanno osservato, la sintassi precisa per il comando varia a seconda dei diversi tipi di DBMS. La sintassi che usi funziona in 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

Per HSQLDB:

ALTER TABLE tableName ALTER COLUMN columnName SET NULL;

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

Questo funzionerà per te.

Se si desidera modificare una colonna non nulla per consentire null, non è necessario includere clausole non null. Perché le colonne predefinite non sono nulle.

ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT;

0

Questo dipende da quale motore SQL stai usando, in Sybase il tuo comando funziona bene:

ALTER TABLE Merchant_Pending_Functions 
Modify NumberOfLocations NULL;

0

Oracolo

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


Questa risposta porta qualcosa di nuovo rispetto alla risposta di @ IgorS ? E cosa significa SQL_SCRIPT?
— jpeg
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.