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.