Löschen Sie die Standardeinschränkung für eine Spalte in TSQL

Ich habe eine Tabelle mit einer Spalte wie dieser, die derzeit aktiv ist:

name NVARCHAR(128) NOT NULL DEFAULT ''

Ich ändere die Spalte folgendermaßen, um sie nullfähig zu machen:

ALTER TABLE  mytable ALTER COLUMN name NVARCHAR(128) NULL

Die Standardeinschränkung mit dem Namen "DF__mytable__datab__7DE4B36" in einer Instanz der Tabelle bleibt jedoch bestehen. Ich weiß, dass dies hätte vermieden werden können, wenn der ursprüngliche Autor die Einschränkung genannt hätte. Ich habe mehrere Instanzen dieser Tabellen, aber ich möchte nicht jede Einschränkung in jeder Tabelle, die ich habe, manuell löschen. Was ist die einfachste und eleganteste Möglichkeit, diese Standardeinschränkung für eine Spalte in SQL Server zu löschen, die ich auf jede Instanz dieser Tabelle einheitlich anwenden kann?

BEARBEITEN

Dies ist das Skript, das ich letztendlich verwendete:

DECLARE @table_id AS INT
DECLARE @name_column_id AS INT
DECLARE @sql nvarchar(255) 

-- Find table id
SET @table_id = OBJECT_ID('mytable')

-- Find name column id
SELECT @name_column_id = column_id
FROM sys.columns
WHERE object_id = @table_id
AND name = 'name'

-- Remove default constraint from name column
SELECT @sql = 'ALTER TABLE mytable DROP CONSTRAINT ' + D.name
FROM sys.default_constraints AS D
WHERE D.parent_object_id = @table_id
AND D.parent_column_id = @name_column_id
EXECUTE sp_executesql @sql

Ein weiteres Skript, mit dem dies erreicht werden kann, finden Sie hier:Wie lösche ich die SQL-Standardeinschränkung, ohne den Namen zu kennen?

Vielen Dank!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage