Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Benennen Sie einen Fremdschlüssel in SQL Server mit T-SQL um

Sie können den sp_rename verwenden gespeicherte Systemprozedur zum Umbenennen einer Fremdschlüsseleinschränkung in SQL Server.

Der Zweck dieser gespeicherten Prozedur besteht darin, Ihnen zu ermöglichen, vom Benutzer erstellte Objekte in der aktuellen Datenbank umzubenennen, sodass Sie auch andere Objekte wie Tabellen, Spalten, Alias-Datentypen usw. umbenennen können.

Syntax

Die Syntax von sp_rename geht so:

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

Ihr Code könnte also etwa so aussehen:

sp_rename 'schema_name.old_fk_name', 'new_fk_name';

Beachten Sie, dass die Microsoft-Dokumentation besagt, dass Sie beim Umbenennen von Einschränkungen (z. B. Fremdschlüsseln) den vorhandenen Namen mit dem Schemanamen qualifizieren müssen.

Möglicherweise erhalten Sie einen Fehler, wenn Sie das Schema weglassen, aber es ist wahrscheinlich eine gute Idee, den Rat von Microsoft in diesem Fall zu befolgen.

Das folgende Beispiel zeigt mir das Umbenennen eines Fremdschlüssels.

Beispiel 1 – Alle Fremdschlüssel überprüfen

Zuerst schaue ich mir die Fremdschlüssel in der Datenbank an (damit ich entscheiden kann, welchen ich umbenennen möchte).

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;

Ergebnis:

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

Der dritte Fremdschlüssel ( FK__Artists__Country__4AB81AF0 ) wurde vom System benannt. Das System hat es benannt, weil ich vergessen habe, einen Namen anzugeben, als ich es erstellt habe.

Geben wir diesem Fremdschlüssel einen prägnanteren Namen.

Beispiel 2 – Fremdschlüssel umbenennen

Hier ist das Bit, das den Fremdschlüssel umbenennt.

sp_rename 'dbo.FK__Artists__Country__4AB81AF0', 'FK_Artists_Country';

Wie erwähnt, kommt zuerst der alte (bestehende) Name, dann der neue Name.

Wenn ich jetzt also alle Fremdschlüssel auswähle, erhalte ich das folgende Ergebnis.

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;

Ergebnis:

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

Ich habe den Fremdschlüssel erfolgreich umbenannt.