sql >> Database teknologi >  >> RDS >> Sqlserver

Omdøb en fremmednøgle i SQL Server ved hjælp af T-SQL

Du kan bruge sp_rename systemlagret procedure for at omdøbe en fremmednøglebegrænsning i SQL Server.

Formålet med denne lagrede procedure er at give dig mulighed for at omdøbe brugeroprettede objekter i den aktuelle database, så du også kan omdøbe andre objekter såsom tabeller, kolonner, aliasdatatyper osv.

Syntaks

Syntaksen for sp_rename går sådan her:

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

Så din kode kunne se sådan ud:

sp_rename 'schema_name.old_fk_name', 'new_fk_name';

Bemærk, at Microsoft-dokumentationen angiver, at når du omdøber begrænsninger (såsom fremmednøgler), skal du kvalificere det eksisterende navn med skemanavnet.

Du får muligvis eller ikke får en fejl, hvis du udelader skemaet, men det er sandsynligvis en god idé at følge Microsofts råd om dette.

Følgende eksempel viser mig omdøbning af en fremmednøgle.

Eksempel 1 – Gennemgå alle fremmednøgler

Først vil jeg tage et kig på fremmednøglerne i databasen (så jeg kan beslutte, hvilken jeg skal omdøbe).

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;

Resultat:

+--------------------------------+----------+---------+--------------------+
| 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            |
+--------------------------------+----------+---------+--------------------+

Den tredje fremmednøgle ( FK__Artists__Country__4AB81AF0 ) er blevet navngivet af systemet. Systemet navngav det, fordi jeg glemte at give et navn, da jeg oprettede det.

Lad os give denne fremmednøgle et mere kortfattet navn.

Eksempel 2 – Omdøb fremmednøglen

Her er den bit, der omdøber fremmednøglen.

sp_rename 'dbo.FK__Artists__Country__4AB81AF0', 'FK_Artists_Country';

Som nævnt kommer det gamle (eksisterende) navn først, derefter det nye navn.

Så nu, hvis jeg vælger alle fremmednøgler, får jeg følgende resultat.

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;

Resultat:

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

Jeg har omdøbt fremmednøglen.


  1. Arbejde med SQL-markører

  2. Sjovt med (columnstore) komprimering på et meget stort bord – del 1

  3. VBA's Case Changing-funktion

  4. Forespørgselskombinationer med indlejret matrix af poster i JSON-datatype