Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Преименувайте чужд ключ в SQL Server с помощта на T-SQL

Можете да използвате sp_rename системна съхранена процедура за преименуване на ограничение за външен ключ в SQL Server.

Целта на тази съхранена процедура е да ви позволи да преименувате създадени от потребителя обекти в текущата база данни, така че можете да преименувате и други обекти като таблици, колони, типове данни с псевдоним и т.н.

Синтаксис

Синтаксисът на sp_rename става така:

sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'   
    [ , [ @objtype = ] 'object_type' ]

Така че кодът ви може да е нещо подобно:

sp_rename 'schema_name.old_fk_name', 'new_fk_name';

Имайте предвид, че в документацията на Microsoft се посочва, че когато преименувате ограничения (като външни ключове), трябва да квалифицирате съществуващото име с името на схемата.

Може да получите или да не получите грешка, ако пропуснете схемата, но вероятно е добра идея да следвате съвета на Microsoft за това.

Следният пример показва как преименувам външен ключ.

Пример 1 – Преглед на всички външни ключове

Първо, ще разгледам външните ключове в базата данни (за да мога да реша кой да преименувам).

SELECT
  name AS 'Foreign Key',
  SCHEMA_NAME(schema_id) AS 'Schema',
  OBJECT_NAME(parent_object_id) AS 'Table',
  OBJECT_NAME(referenced_object_id) AS 'Referenced Table'
FROM sys.foreign_keys;

Резултат:

+--------------------------------+----------+---------+--------------------+
| Foreign Key                    | Schema   | Table   | Referenced Table   |
|--------------------------------+----------+---------+--------------------|
| FK_Albums_Artists              | dbo      | Albums  | Artists            |
| FK_Albums_Genres               | dbo      | Albums  | Genres             |
| FK__Artists__Country__4AB81AF0 | dbo      | Artists | Country            |
+--------------------------------+----------+---------+--------------------+

Третият външен ключ ( FK__Artists__Country__4AB81AF0 ) е именуван от системата. Системата го нарече, защото забравих да дам име, когато го създадох.

Нека дадем на този външен ключ по-сбито име.

Пример 2 – Преименувайте външния ключ

Ето частта, която преименува външния ключ.

sp_rename 'dbo.FK__Artists__Country__4AB81AF0', 'FK_Artists_Country';

Както споменахме, първо идва старото (съществуващо) име, а след това новото име.

Така че сега, ако избера всички външни ключове, получавам следния резултат.

SELECT
  name AS 'Foreign Key',
  SCHEMA_NAME(schema_id) AS 'Schema',
  OBJECT_NAME(parent_object_id) AS 'Table',
  OBJECT_NAME(referenced_object_id) AS 'Referenced Table'
FROM sys.foreign_keys;

Резултат:

+--------------------+----------+---------+--------------------+
| Foreign Key        | Schema   | Table   | Referenced Table   |
|--------------------+----------+---------+--------------------|
| FK_Albums_Artists  | dbo      | Albums  | Artists            |
| FK_Albums_Genres   | dbo      | Albums  | Genres             |
| FK_Artists_Country | dbo      | Artists | Country            |
+--------------------+----------+---------+--------------------+

Успешно преименувах външния ключ.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да прочетете последния ред с SQL Server

  2. Схема на база данни, автоинкремент

  3. Функция SQL Row_Number() в клауза Where

  4. Еквивалент на MySQL ПРИ АКТУАЛИЗИРАНЕ НА ДУБЛИКАТ КЛЮЧ в Sql Server

  5. Преглеждайте историята на заданията на агент на SQL Server с Azure Data Studio