SQL-Standardeinschränkungen löschen, ohne den Namen zu kennen
In SQL Server sind Standardeinschränkungen eine Möglichkeit, einen Wert anzugeben, der automatisch zugewiesen wird zu einer Spalte, wenn kein anderer Wert angegeben wird. Es kann jedoch Situationen geben, in denen der Name der Standardeinschränkung unbekannt ist oder falsch eingegeben wurde.
Die Herausforderung
Um eine Standardeinschränkung zu löschen, verwenden Sie die ALTER TABLE DROP CONSTRAINT-Syntax erfordert die Angabe des Einschränkungsnamens. Leider sind Informationen zu Standardeinschränkungen nicht ohne weiteres über die Tabelle INFORMATION_SCHEMA verfügbar.
Die Lösung
Ein Ansatz zur Bewältigung dieser Herausforderung besteht darin, dynamisches SQL zum Generieren des Befehls zu verwenden um die Einschränkung basierend auf den Schema-, Tabellen- und Spaltennamen zu löschen. Hier ist ein Beispiel:
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)
Dieses Skript generiert den erforderlichen ALTER TABLE DROP CONSTRAINT-Befehl dynamisch basierend auf den bereitgestellten Informationen und führt ihn aus, wobei die Standardeinschränkung entfernt wird, ohne dass der genaue Name erforderlich ist.
Von Unter Verwendung von dynamischem SQL ermöglicht diese Methode das Entfernen von Standardeinschränkungen, ohne dass Vorkenntnisse erforderlich sind oder potenzielle Fehler aufgrund falscher Einschränkungsnamen auftreten können.
Das obige ist der detaillierte Inhalt vonWie lösche ich eine SQL Server-Standardeinschränkung, ohne ihren Namen zu kennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!