Heim > Datenbank > MySQL-Tutorial > Wie lösche ich SQL Server-Standardeinschränkungen, ohne deren Namen zu kennen?

Wie lösche ich SQL Server-Standardeinschränkungen, ohne deren Namen zu kennen?

Barbara Streisand
Freigeben: 2024-12-30 03:58:09
Original
808 Leute haben es durchsucht

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

SQL-Standardeinschränkungen löschen, ohne deren Namen zu kennen

Hintergrund

SQL Server ermöglicht die Erstellung von Standardeinschränkungen für Spalten . In früheren Versionen führten Tippfehler jedoch häufig zu inkonsistenten Einschränkungsnamen, z. B. „DF_SomeTable_ColName“ und „DF_SmoeTable_ColName“. Dies stellt eine Herausforderung dar, wenn versucht wird, eine Standardeinschränkung zu löschen, ohne ihren genauen Namen zu kennen.

Lösung

Um eine Standardeinschränkung effektiv zu entfernen, ohne ihren Namen zu kennen, verwenden Sie den folgenden Ansatz kann verwendet werden:

  1. Drop-Befehl dynamisch generieren:Verwenden der Kombination von Für die Tabellen sys.tables, sys.default_constraints und sys.columns kann eine dynamische Zeichenfolge erstellt werden, die den SQL-Befehl zum Löschen der Einschränkung darstellt. Diese Zeichenfolge identifiziert die Tabelle, Spalte und bestimmte Standardeinschränkung, die entfernt werden soll.
  2. Dynamischen Befehl ausführen: Sobald die Drop-Befehlszeichenfolge generiert wurde, kann sie dynamisch mit „execute“ ausgeführt werden (@ Befehl). Dieser Schritt führt den Befehl aus und entfernt die Standardeinschränkung.

Beispielcode

Das folgende Codebeispiel bietet eine Implementierung des beschriebenen Ansatzes:

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)
Nach dem Login kopieren

Durch die Verwendung dieser Technik können Standardeinschränkungen dynamisch entfernt werden, unabhängig von durch Tippfehler verursachten Namensinkonsistenzen. Dieser Ansatz stellt sicher, dass Einschränkungen erfolgreich gelöscht werden, ohne dass Fehler aufgrund unbekannter Einschränkungsnamen auftreten.

Das obige ist der detaillierte Inhalt vonWie lösche ich SQL Server-Standardeinschränkungen, ohne deren Namen zu kennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage