216 votes

Modifier une table : Comment changer l'attribut 'Allow Nulls' de not null à allow null ?

Comment changer un attribut dans une table en utilisant T-SQL pour autoriser les nullités (not null --> null) ? Modifier la table peut-être ?

13 votes

SQL Server Management Studio crée un script très complexe pour une tâche aussi simple. C'est pourquoi j'ai été confus et j'ai vérifié stackoverflow. Peut-être que c'est le but de la question...

1voto

Jeffrey Pallatt Points 11

J'ai écrit ceci pour pouvoir éditer toutes les tables et colonnes en nullité en même temps :

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

1voto

Tilak Dewangan Points 295

Voici la démarche à suivre pour y parvenir : -

  1. Vérifiez si la table ou la colonne existe ou non.
  2. Si c'est le cas, modifiez la colonne, par exemple

    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

Si vous n'avez pas de schéma, alors supprimer la ligne de schéma parce que vous n'avez pas besoin de donner le schéma par défaut.

0voto

Mohsin Younas Points 18

Le plus simple est donc,

alter table table_name change column_name column_name int(11) NULL;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X