Du kan bruge sp_rename systemlagret procedure for at omdøbe en CHECK begræ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 kan også bruge den til at 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_constraint_name', 'new_constraint_name';
Bemærk, at Microsoft-dokumentationen angiver, at når du omdøber begrænsninger, skal du kvalificere det eksisterende navn med skemanavnet.
Følgende eksempel viser, hvordan man omdøber en CHECK begrænsning.
Eksempel 1 – Vælg en begrænsning for at omdøbe
Lad os først liste CHECK ud begrænsninger i databasen, så vi kan beslutte, hvilken der skal omdøbes.
SELECT name, SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', definition FROM sys.check_constraints;
Resultat:
+-----------------+----------+----------------+----------------------------------------+ | 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') | +-----------------+----------+----------------+----------------------------------------+
Lad os omdøbe den anden begrænsning ( chkValidEndDate ).
Lad os fjerne Gyldig del, så det kun bliver chkEndDate .
Eksempel 2 – Omdøb begrænsningen
Kør dette for at omdøbe begrænsningen.
sp_rename 'dbo.chkValidEndDate', 'chkEndDate';
Så det gamle (eksisterende) navn kommer først, efterfulgt af det nye navn.
Så nu hvis jeg vælger alle CHECK begrænsninger igen, får jeg følgende resultat.
SELECT name, SCHEMA_NAME(schema_id) AS 'Schema', OBJECT_NAME(parent_object_id) AS 'Table', definition FROM sys.check_constraints;
Resultat:
+-------------+----------+----------------+----------------------------------------+ | 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') | +-------------+----------+----------------+----------------------------------------+
Begrænsningens navn er blevet ændret.
Som nævnt er sp_rename lagret procedure er ikke begrænset til kun CHECK begrænsninger. Du kan bruge nøjagtig den samme syntaks til at omdøbe en fremmednøglebegrænsning, en tabel, kolonne, aliasdatatype eller et hvilket som helst andet brugerdefineret objekt.
Microsoft fraråder dog at omdøbe lagrede procedurer, udløsere, brugerdefinerede funktioner eller visninger. I sådanne tilfælde anbefaler Microsoft, at du i stedet dropper objektet og genskaber det med det nye navn.