我正在重構我的應用程序,並且我不再需要其中一個數據庫表。我嘗試將其刪除,但它給了我一個錯誤:我怎樣才能找出哪個表連接到某個表?
Drop Failed for: 'XYZ'. Could not drop because it is referenced by a Foreign Key Constraint
我如何可以找出其他表有外鍵列到這個表?
我正在重構我的應用程序,並且我不再需要其中一個數據庫表。我嘗試將其刪除,但它給了我一個錯誤:我怎樣才能找出哪個表連接到某個表?
Drop Failed for: 'XYZ'. Could not drop because it is referenced by a Foreign Key Constraint
我如何可以找出其他表有外鍵列到這個表?
右鍵單擊對象瀏覽和查看依賴關係中的表格?
你可以在這裏獲取列表(離開關閉where子句,如果你想在數據庫中的所有FK約束列表):
SELECT name,
QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))
+ '.' + QUOTENAME(OBJECT_NAME(parent_object_id))
+ ' references '
+ QUOTENAME(OBJECT_SCHEMA_NAME(referenced_object_id))
+ '.' + QUOTENAME(OBJECT_NAME(referenced_object_id))
FROM sys.foreign_keys
WHERE OBJECT_NAME(referenced_object_id) = N'XYZ';
要生成的下降,你可以說:
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'';
SELECT @sql = @sql + '
ALTER TABLE ' +
QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))
+ '.' + QUOTENAME(OBJECT_NAME(parent_object_id))
+ ' DROP CONSTRAINT ' + QUOTENAME(name) + ';'
FROM sys.foreign_keys
WHERE OBJECT_NAME(referenced_object_id) = N'XYZ';
EXEC sp_executesql @sql;
試試這個
select * from sys.foreign_keys fk where referenced_object_id = object_id(<tablename>)
爲什麼'all_objects'?你爲什麼需要加入? – 2012-07-26 15:23:22
Sybase的壞習慣我猜。 – 2012-07-26 15:35:21
有人向下投我不做任何評論。請解釋?我總是打開糾正。 – PowerUser 2013-07-31 20:33:31