我目前在我的SQL Server數據庫中創建新表。我正在重命名舊錶,所以還有外鍵約束。如何更改外鍵名稱?
要使用Adventureworks DB作爲示例,SalesOrderDetail表的FK_SalesOrderDetail_SalesOrderHeader_SalesOrderId(鏈接到SalesOrderHeader表)。
正在改變這個外鍵的名稱是否足夠,或者我是否還需要更改SalesOrderHeader表中的外鍵引用?
我目前在我的SQL Server數據庫中創建新表。我正在重命名舊錶,所以還有外鍵約束。如何更改外鍵名稱?
要使用Adventureworks DB作爲示例,SalesOrderDetail表的FK_SalesOrderDetail_SalesOrderHeader_SalesOrderId(鏈接到SalesOrderHeader表)。
正在改變這個外鍵的名稱是否足夠,或者我是否還需要更改SalesOrderHeader表中的外鍵引用?
只是名稱 - 它不會以任何方式改變關係。
EXEC sp_rename 'Sales.FK_SalesOrderDetail_SalesOrderHeader_SalesOrderId',
'new_name',
'OBJECT';
注:在國外AdventureWorks的關鍵是在Sales
架構,以便在object_name
說法是架構在上述過程調用合格。
SELECT Object_name(constraint_object_id),
Object_name(parent_object_id),
(SELECT name
FROM sys.columns
WHERE object_id = parent_object_id
AND column_id = parent_column_id),
Object_name(referenced_object_id),
(SELECT name
FROM sys.columns
WHERE object_id = referenced_object_id
AND column_id = referenced_column_id),
'sp_rename ''' + Object_name(constraint_object_id) + ''', ''con_fk_' + (SELECT Lower(name)
FROM sys.columns
WHERE object_id = parent_object_id
AND column_id = parent_column_id) + ''',''OBJECT'''
FROM sys.foreign_key_columns