Sie können den sp_rename
verwenden gespeicherte Systemprozedur zum Umbenennen eines CHECK
Einschränkung in SQL Server.
Der Zweck dieser gespeicherten Prozedur besteht darin, Ihnen das Umbenennen von benutzerdefinierten Objekten in der aktuellen Datenbank zu ermöglichen. Sie können es also auch verwenden, um andere Objekte wie Tabellen, Spalten, Alias-Datentypen usw. umzubenennen.
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_constraint_name', 'new_constraint_name';
Beachten Sie, dass die Microsoft-Dokumentation besagt, dass Sie beim Umbenennen von Einschränkungen den vorhandenen Namen mit dem Schemanamen qualifizieren müssen.
Das folgende Beispiel zeigt, wie ein CHECK
umbenannt wird Einschränkung.
Beispiel 1 – Wählen Sie eine Einschränkung zum Umbenennen aus
Lassen Sie uns zuerst den CHECK
auflisten Beschränkungen in der Datenbank, sodass wir entscheiden können, welche umbenannt werden soll.
SELECT name, SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', definition FROM sys.check_constraints;
Ergebnis:
+-----------------+----------+----------------+----------------------------------------+ | name | Schema | Table | definition | |-----------------+----------+----------------+----------------------------------------| | chkPrice | dbo | ConstraintTest | ([Price]>(0)) | | chkValidEndDate | dbo | ConstraintTest | ([EndDate]>=[StartDate]) | | chkTeamSize | dbo | ConstraintTest | ([TeamSize]>=(5) AND [TeamSize]<=(20)) | | chkJobTitle | dbo | Occupation | ([JobTitle]<>'Digital Nomad') | +-----------------+----------+----------------+----------------------------------------+
Lassen Sie uns die zweite Einschränkung umbenennen ( chkValidEndDate ).
Lassen Sie uns das Valid entfernen Teil, sodass daraus nur chkEndDate wird .
Beispiel 2 – Bedingung umbenennen
Führen Sie dies aus, um die Einschränkung umzubenennen.
sp_rename 'dbo.chkValidEndDate', 'chkEndDate';
Der alte (vorhandene) Name kommt also zuerst, gefolgt vom neuen Namen.
Also jetzt wenn ich alle CHECK
auswähle Einschränkungen erhalte ich folgendes Ergebnis.
SELECT name, SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', definition FROM sys.check_constraints;
Ergebnis:
+-------------+----------+----------------+----------------------------------------+ | name | Schema | Table | definition | |-------------+----------+----------------+----------------------------------------| | chkPrice | dbo | ConstraintTest | ([Price]>(0)) | | chkEndDate | dbo | ConstraintTest | ([EndDate]>=[StartDate]) | | chkTeamSize | dbo | ConstraintTest | ([TeamSize]>=(5) AND [TeamSize]<=(20)) | | chkJobTitle | dbo | Occupation | ([JobTitle]<>'Digital Nomad') | +-------------+----------+----------------+----------------------------------------+
Der Name der Einschränkung wurde geändert.
Wie bereits erwähnt, die sp_rename
Stored Procedure ist nicht nur auf CHECK
beschränkt Einschränkungen. Sie können genau dieselbe Syntax verwenden, um eine Fremdschlüsseleinschränkung, eine Tabelle, eine Spalte, einen Aliasdatentyp oder ein beliebiges anderes benutzerdefiniertes Objekt umzubenennen.
Microsoft rät jedoch davon ab, gespeicherte Prozeduren, Trigger, benutzerdefinierte Funktionen oder Ansichten umzubenennen. In solchen Fällen empfiehlt Microsoft stattdessen, das Objekt zu löschen und mit dem neuen Namen neu zu erstellen.