2010-10-08 9 views

risposta

256
-- replace NVARCHAR(42) with the actual type of your column 
ALTER TABLE your_table 
ALTER COLUMN your_column NVARCHAR(42) NULL 
+2

O semplicemente "ALTER TABLE your_table ALTER COLUMN your_column NVARCHAR (42)' come impostazione predefinita per consentire null in ogni caso se non specificato esplicitamente altrimenti. –

+0

Nota se è necessario modificare più colonne per consentire null, sarà necessario eseguire comandi separati 'ALTER TABLE .. ALTER COLUMN ..' – sonyisda1

+1

Nota alcuni casi potrebbero non funzionare - vedere [questa risposta DBA Stack Exchange] (https://dba.stackexchange.com/a/27293/158) se stai ricevendo un errore 'ALTER TABLE ALTER COLUMN non riuscito perché uno o più oggetti accedono a questa colonna. –

20

ALTER TABLE è giusto:

ALTER TABLE MyCustomers ALTER COLUMN CompanyName VARCHAR(20) NULL 
+2

Sei sicuro di aver bisogno di ridefinire i vincoli e solo il tipo di dati? [L'articolo MSDN] (http://msdn.microsoft.com/en-us/library/ms190273.aspx) non menziona la necessità di ridefinire i vincoli: "Se NULL o NOT NULL sono specificati con ALTER COLUMN, new_data_type [(precision [, scale])] deve essere specificato. Se il tipo di dati, la precisione e la scala non vengono modificati, specificare i valori della colonna corrente. " –

+0

@Daniel Vassallo - Hai ragione. Stavo cercando di essere completo, ma la modifica di NULL/NOT NULL dovrebbe essere l'unica modifica. – Oded

37

Sì, è possibile utilizzare ALTER TABLE come segue:

ALTER TABLE [table name] ALTER COLUMN [column name] [data type] NULL 

Citando dalla documentazione ALTER TABLE:

NULL possono essere specificati in ALTER COLUMN per forza a NOT NULL colonna per consentire valori nulli, ad eccezione delle colonne nei vincoli PRIMARY KEY.

2
ALTER TABLE public.contract_termination_requests 
ALTER COLUMN management_company_id DROP NOT NULL; 
+1

Questa è la risposta che ha funzionato su PostgreSQL. –

+1

@ ÁronLőrincz però la domanda non riguarda Postgres. È contrassegnato come SQL Server, quindi questa risposta non è corretta. –

+0

Hai ragione, ma mi ha comunque aiutato e penso che sia un commento utile per le persone che trovano la domanda tramite Google. Il titolo della domanda non chiarisce di quale server di database si tratta. –

-1

è possibile utilizzare

ALTER TABLE table_name ALTER COLUMN column-name DROP NOT NULL; 
Problemi correlati