名前を指定せずに外部キーを作成して、sql serverがそれを自動生成された名前で作成しました。今私はこの外部キーを持つ列を削除したいと思います。問題は、私はこの外部キーの名前を知らないということです。特定のテーブルの特定の列のすべての外部キーを削除する方法はありますか?特定の列の外部キーを削除する方法
は、これまでのところ私は、列
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
のためのすべてのデフォルトの制約をドロップし、このスクリプトを見つけた。しかし、それは、外部キー制約には役立ちません。
'EXEC sp_help 'TABLE_NAME';'結果セットからFK制約名をコピーし、 'DROP CONSTRAINT'コマンドを使用してそれをドロップしてください! –