Ich habe einen Fremdschlüssel ohne Angabe des Namens erstellt, so dass SQL Server ihn mit automatisch generiertem Namen erstellt hat. Jetzt möchte ich die Spalte löschen, die diesen Fremdschlüssel hat. Das Problem ist, dass ich den Namen dieses Fremdschlüssels nicht kenne. Gibt es eine Möglichkeit, alle Fremdschlüssel für bestimmte Spalte in bestimmten Tabelle zu löschen?So löschen Sie Fremdschlüssel einer bestimmten Spalte
Bisher habe ich dieses Skript gefunden, die alle Standardeinschränkungen für Spalte fällt
DECLARE @tableName VARCHAR(MAX)
DECLARE @ConstraintName nvarchar(200)
DECLARE @columnName VARCHAR(MAX)
SET @tableName = 'tablename'
SET @columnName = 'columnname'
SELECT @ConstraintName = Name
FROM SYS.DEFAULT_CONSTRAINTS
WHERE PARENT_OBJECT_ID = OBJECT_ID(@tableName)
AND PARENT_COLUMN_ID = (
SELECT column_id FROM sys.columns
WHERE NAME = @columnName AND object_id = OBJECT_ID(@tableName))
IF @ConstraintName IS NOT NULL
BEGIN
EXEC('ALTER TABLE '[email protected]+' DROP CONSTRAINT ' + @ConstraintName)
END
ALTER TABLE [tablename] DROP COLUMN columnname
GO
Aber es mit Fremdschlüssel-Constraints nicht hilft.
'EXEC sp_help 'TABLE_NAME';' Kopieren Sie den FK-Einschränkungsnamen aus der Ergebnismenge und löschen Sie ihn dann mit dem Befehl 'DROP CONSTRAINT'! –