Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zmień nazwę klucza podstawowego w SQL Server (T-SQL)

W SQL Server możesz użyć sp_rename procedura składowana do zmiany nazwy obiektu utworzonego przez użytkownika w bieżącej bazie danych, w tym klucza podstawowego.

Może to być przydatne, jeśli masz klucz podstawowy, który miał automatycznie przypisaną nazwę, a teraz chcesz nadać mu bardziej czytelną nazwę.

Gdy tworzysz klucz podstawowy bez jawnego podawania jego nazwy, SQL Server automatycznie deleguje dla niego nazwę. Takie nazwy zazwyczaj zawierają długi przyrostek numeryczny, co utrudnia ich zapamiętanie. Jeśli potrzebujesz odwołać się do tego klucza podstawowego (np. w kodzie, dokumentacji itp.), takie nazwy mogą utrudnić ci życie. Na szczęście sp_rename zapewnia szybki i łatwy sposób zmiany tej nazwy.

Składnia

Składnia sp_rename idzie tak:

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

W przypadku kluczy podstawowych (i innych ograniczeń) typ obiektu to OBJECT .

Przykład

Najpierw zdobądźmy nazwę klucza podstawowego, który chcemy zmienić:

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

Wynik:

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

To jest klucz podstawowy tabeli o nazwie t1 , więc przejdziemy dalej i zmienimy nazwę tego klucza podstawowego.

Gdy zmieniasz nazwę klucza podstawowego, musisz dołączyć schemat z bieżącą nazwą.

Przykład:

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

Gdy zmienisz nazwę klucza podstawowego (lub dowolnego innego obiektu) w SQL Server, prawdopodobnie zobaczysz następujący komunikat:

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

Zasadniczo daje nam to informację, że wszelkie skrypty i/lub procedury składowane, które odwołują się do obiektu, mogą teraz zostać zepsute i powinny zostać odpowiednio zaktualizowane, aby odzwierciedlić nową nazwę.

Niezależnie od tego, nazwa klucza głównego została zmieniona.

Możemy to zweryfikować, ponownie uruchamiając poprzednie zapytanie:

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

Wynik:

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

W tym typ obiektu

Jako trzeci argument można również dołączyć typ obiektu. W przypadku kluczy podstawowych i innych ograniczeń użyj OBJECT :

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

W tym nazwy parametrów

Podobnie jak w przypadku każdej procedury składowanej, można również dołączyć nazwy parametrów podczas wywoływania sp_rename :

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

Robi dokładnie to samo (zmienia nazwę określonego klucza podstawowego).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwersja wyników Select do skryptu wstawiania — SQL Server

  2. Opóźniona trwałość w SQL Server 2014

  3. Konwencje nazewnictwa baz danych firmy Microsoft?

  4. Dlaczego warto korzystać z Select Top 100 procent?

  5. 4 sposoby konwersji liczby na procent w SQL Server (T-SQL)