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

Преименувайте първичен ключ в SQL Server (T-SQL)

В SQL Server можете да използвате sp_rename съхранена процедура за преименуване на обект, създаден от потребител, в текущата база данни, включително първичен ключ.

Това може да бъде удобно, ако имате първичен ключ, на който името му е присвоено автоматично, и сега искате да му дадете по-четливо име.

Когато създадете първичен ключ, без изрично да предоставите име за него, SQL Server автоматично делегира име за него. Такива имена обикновено включват дълъг цифров суфикс, което прави по-трудно запомнянето. Ако трябва да се обърнете към този първичен ключ (например във вашия код, документация и т.н.), такива имена могат да направят живота ви по-труден. За щастие, sp_rename предоставя бърз и лесен начин за промяна на това име.

Синтаксис

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

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

За първични ключове (и други ограничения) типът на обекта е OBJECT .

Пример

Първо, нека вземем името на първичния ключ, който искаме да променим:

SELECT 
    SCHEMA_NAME(schema_id) AS SchemaName, 
    name AS PrimaryKey
FROM sys.objects  
WHERE parent_object_id = (OBJECT_ID('dbo.t1'))   
AND type = 'PK';

Резултат:

 +--------------+--------------------------+
 | SchemaName   | PrimaryKey               |
 |--------------+--------------------------|
 | dbo          | PK__t1__3213663B10938530 |
 +--------------+--------------------------+ 

Това е първичният ключ за таблицата, наречена t1 , Така че ще продължим и ще преименуваме този първичен ключ.

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

Пример:

EXEC sp_rename 'dbo.PK__t1__3213663B10938530', 'PK_t1';

Когато преименувате първичен ключ (или всеки друг обект) в SQL Server, вероятно ще видите следното съобщение:

Caution: Changing any part of an object name could break scripts and stored procedures.

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

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

Можем да проверим това, като изпълним отново предишната заявка:

SELECT 
    SCHEMA_NAME(schema_id) AS SchemaName, 
    name AS PrimaryKey
FROM sys.objects  
WHERE parent_object_id = (OBJECT_ID('dbo.t1'))   
AND type = 'PK';

Резултат:

 +--------------+--------------+
 | SchemaName   | PrimaryKey   |
 |--------------+--------------|
 | dbo          | PK_t1        |
 +--------------+--------------+ 

Включително типа на обекта

Можете също да включите типа обект като трети аргумент. За първични ключове и други ограничения използвайте OBJECT :

EXEC sp_rename 'dbo.PK__t1__3213663B10938530', 'PK_t1', 'OBJECT';

Включително имената на параметрите

Както при всяка съхранена процедура, можете също да включите имената на параметрите, когато извиквате sp_rename :

EXEC sp_rename 
    @objname = 'dbo.PK__t1__3213663B10938530',
    @newname = 'PK_t1',
    @objtype = 'OBJECT';

Това прави точно същото нещо (именува посочения първичен ключ).


  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 (T-SQL)

  2. Как да промените формата на текущата дата в SQL Server (T-SQL)

  3. Изтриване на SQL Server – Премахване на един или повече редове от таблица с леко напреднали сценарии

  4. Какво е логически оператор в SQL Server - SQL Server / TSQL урок, част 123

  5. SQL Server:Заявка бързо, но бавно от процедура