我目前在我的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