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

Benennen Sie eine CHECK-Einschränkung in SQL Server mithilfe von T-SQL um

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.