Maison > base de données > tutoriel mysql > Comment supprimer les contraintes par défaut de SQL Server sans connaître leurs noms ?

Comment supprimer les contraintes par défaut de SQL Server sans connaître leurs noms ?

Barbara Streisand
Libérer: 2024-12-30 03:58:09
original
808 Les gens l'ont consulté

How to Drop SQL Server Default Constraints Without Knowing Their Names?

Supprimer les contraintes SQL par défaut sans connaître leurs noms

Arrière-plan

SQL Server permet la création de contraintes par défaut sur les colonnes . Cependant, dans les premières versions, les fautes de frappe entraînaient souvent des noms de contraintes incohérents, tels que « DF_SomeTable_ColName » et « DF_SmoeTable_ColName ». Cela pose un défi lorsque l'on tente de supprimer une contrainte par défaut sans connaître son nom précis.

Solution

Pour supprimer efficacement une contrainte par défaut sans connaître son nom, l'approche suivante peut être utilisé :

  1. Générer dynamiquement une commande de dépôt :Utiliser la combinaison de sys.tables, sys.default_constraints et sys.columns, une chaîne dynamique représentant la commande SQL permettant de supprimer la contrainte peut être construite. Cette chaîne identifie la table, la colonne et la contrainte par défaut spécifique à supprimer.
  2. Exécuter la commande dynamique : Une fois la chaîne de commande drop générée, elle peut être exécutée dynamiquement à l'aide d'exécuter (@ Commande). Cette étape exécute la commande et supprime la contrainte par défaut.

Exemple de code

L'exemple de code suivant fournit une implémentation de l'approche décrite :

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)
Copier après la connexion

En utilisant cette technique, les contraintes par défaut peuvent être supprimées dynamiquement, quelles que soient les incohérences de nom induites par des fautes de frappe. Cette approche garantit que les contraintes sont supprimées avec succès sans rencontrer d'erreurs dues à des noms de contraintes inconnus.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal