Maison >base de données >tutoriel mysql >Comment supprimer les contraintes par défaut dans SQL Server lorsque leurs noms sont inconnus ?

Comment supprimer les contraintes par défaut dans SQL Server lorsque leurs noms sont inconnus ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-03 18:56:39232parcourir

How to Drop Default Constraints in SQL Server When Their Names Are Unknown?

Suppression des contraintes par défaut avec des noms inconnus dans Microsoft SQL Server

Cette question aborde le défi de la suppression des contraintes par défaut des tables SQL lorsque leurs noms sont inconnu, en raison de fautes de frappe potentielles. La requête existante, telle que fournie par l'utilisateur, nécessite le nom exact de la contrainte pour son exécution, ce qui peut poser problème dans certaines situations.

La solution

La solution suggérée implique générer et exécuter une commande SQL dynamique pour supprimer la contrainte en fonction des informations de table, de colonne et de schéma fournies. L'extrait de code partagé par l'utilisateur peut être développé comme suit :

declare @schema_name nvarchar(256)
declare @table_name nvarchar(256)
declare @col_name nvarchar(256)
declare @Command  nvarchar(1000)

set @schema_name = N'MySchema'
set @table_name = N'Department'
set @col_name = N'ModifiedDate'

select @Command = 'ALTER TABLE ' + @schema_name + '.[' + @table_name + '] DROP CONSTRAINT ' + d.name
from sys.tables t
join sys.default_constraints d on d.parent_object_id = t.object_id
join sys.columns c on c.object_id = t.object_id and c.column_id = d.parent_column_id
where t.name = @table_name
and t.schema_id = schema_id(@schema_name)
and c.name = @col_name

--print @Command

execute (@Command)

Ce code génère la commande SQL nécessaire pour supprimer la contrainte par défaut pour une table et une colonne spécifiques dans un schéma particulier. La commande est construite dynamiquement sur la base des paramètres fournis, garantissant qu'elle peut être exécutée sans aucune erreur SQL même si le nom de la contrainte est inconnu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn