Подтвердить что ты не робот

Как изменить имя внешнего ключа?

В настоящее время я создаю новые таблицы в своей базе данных SQL Server. Я переименовываю старые таблицы, а также ограничения внешнего ключа.

Чтобы использовать DB Adventureworks в качестве примера, таблица SalesOrderDetail имеет FK_SalesOrderDetail_SalesOrderHeader_SalesOrderId (которая ссылается на таблицу SalesOrderHeader).

Является ли изменение этого внешнего ключа достаточным или мне также нужно изменить ссылку внешнего ключа в таблице SalesOrderHeader?

4b9b3361

Ответ 1

Просто имя - это никак не изменит отношения.

EXEC sp_rename 'Sales.FK_SalesOrderDetail_SalesOrderHeader_SalesOrderId', 
                'new_name', 
                'OBJECT';

NB: этот внешний ключ в AdventureWorks находится в схеме Sales, поэтому аргумент object_name является схемой, квалифицированной в вызове процедуры выше.

Ответ 2

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