it-swarm.it

Modifica tabella: come modificare l'attributo 'Permetti Null' da non null per consentire null

Come modificare un attributo in una tabella utilizzando T-SQL per consentire i valori nulli (non null -> null)? Alter table forse?

181
CrazyMouse
-- replace NVARCHAR(42) with the actual type of your column
ALTER TABLE your_table
ALTER COLUMN your_column NVARCHAR(42) NULL
328
LukeH

Sì, puoi usare ALTER TABLE come segue:

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

Citando da ALTER TABLE documentation:

NULL può essere specificato in ALTER COLUMN per forzare una colonna NOT NULL per consentire valori nulli, eccetto per le colonne nei vincoli PRIMARY KEY. 

46
Daniel Vassallo

ALTER TABLE ha ragione:

ALTER TABLE MyCustomers ALTER COLUMN CompanyName VARCHAR(20) NULL
22
Oded
ALTER TABLE public.contract_termination_requests
ALTER COLUMN management_company_id DROP NOT NULL;
3
laxmi kalake

Ho scritto questo in modo da poter modificare tutte le tabelle e le colonne in null contemporaneamente:

select 
case
when sc.max_length = '-1' and st.name in ('char','decimal','nvarchar','varchar')
then
'alter table  [' + so.name + '] alter column [' + sc.name + '] ' + st.name + '(MAX) NULL'
when st.name in ('char','decimal','nvarchar','varchar')
then
'alter table  [' + so.name + '] alter column [' + sc.name + '] ' + st.name + '(' + cast(sc.max_length as varchar(4)) + ') NULL'
else
'alter table  [' + so.name + '] alter column [' + sc.name + '] ' + st.name + ' NULL'
end as query
from sys.columns sc
inner join sys.types st on st.system_type_id = sc.system_type_id
inner join sys.objects so on so.object_id = sc.object_id
where so.type = 'U'
and st.name <> 'timestamp'
order by st.name
1
Jeffrey Pallatt

Questo è l'approccio per fare questo: -

  1. Controlla se la tabella o la colonna esiste o meno.
  2. Se sì, quindi modificare la colonna. per esempio:-
IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE 
            TABLE_CATALOG = 'DBName' AND 
            TABLE_SCHEMA = 'SchemaName' AND
            TABLE_NAME = 'TableName' AND
            COLUMN_NAME = 'ColumnName')
BEGIN
    ALTER TABLE DBName.SchemaName.TableName ALTER COLUMN ColumnName [data type] NULL
END  

Se non si dispone di uno schema, quindi delete la linea dello schema poiché non è necessario fornire lo schema predefinito.

1
Tilak Dewangan

Per MySQL, MariaDB

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

Utilizza MODIFY COLUMN anziché ALTER COLUMN.

0
Vijay Nandwana