Suppression des contraintes SQL par défaut sans connaître le nom
Dans SQL Server, les contraintes par défaut sont un moyen de spécifier une valeur qui sera automatiquement attribuée à une colonne si aucune autre valeur n’est fournie. Cependant, il peut y avoir des situations où le nom de la contrainte par défaut est inconnu ou a été mal saisi.
Le défi
Pour supprimer une contrainte par défaut, la syntaxe ALTER TABLE DROP CONSTRAINT nécessite de spécifier le nom de la contrainte. Malheureusement, les informations sur les contraintes par défaut ne sont pas facilement disponibles via la table INFORMATION_SCHEMA.
La solution
Une approche pour surmonter ce défi consiste à utiliser du SQL dynamique pour générer la commande pour supprimer la contrainte en fonction des noms de schéma, de table et de colonne. Voici un exemple :
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 execute (@Command)
Ce script génère dynamiquement la commande ALTER TABLE DROP CONSTRAINT nécessaire en fonction des informations fournies et l'exécute, supprimant la contrainte par défaut sans exiger son nom exact.
Par utilisant du SQL dynamique, cette méthode permet de supprimer les contraintes par défaut sans avoir besoin de connaissances préalables ni d'erreurs potentielles dues à des noms de contraintes incorrects.
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!