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.