Heim >Datenbank >MySQL-Tutorial >Wie kann man SQL-Standardeinschränkungen löschen, ohne deren Namen zu kennen?

Wie kann man SQL-Standardeinschränkungen löschen, ohne deren Namen zu kennen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-30 18:18:13379Durchsuche

How to Drop SQL Default Constraints Without Knowing Their Names?

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

In SQL Server kann das Identifizieren und Löschen von Standardeinschränkungen eine Herausforderung sein, insbesondere wenn ihre Namen so sind unbekannt oder inkonsistent. Um dieses Problem anzugehen, kann die dynamische Abfragegenerierung eingesetzt werden, um Standardeinschränkungen effektiv zu identifizieren und zu entfernen.

Erweiterte Antwort:

Erweitert das von Mitch Wheat geteilte Skript, noch mehr Der umfassende Ansatz beinhaltet die dynamische Generierung und Ausführung des DROP CONSTRAINT-Befehls. So funktioniert es:

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)

Erklärung:

  • Dieses Skript erstellt dynamisch den Befehl DROP CONSTRAINT, indem es die Metadatentabellen (sys.tables, sys .default_constraints und sys.columns).
  • Es gibt die an Schemaname, Tabellenname und Spaltenname, um die Ziel-Standardeinschränkung zu identifizieren.
  • Der generierte Befehl wird dann gedruckt und dynamisch ausgeführt, sodass Sie die Standardeinschränkung löschen können, ohne ihren genauen Namen zu kennen.

Vorteile:

  • Behandelt inkonsistent benannte Einschränkungen, wie z „DF_SomeTable_ColName“ oder „DF_SmoeTable_ColName“ >

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

Stellungnahme:
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