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.