sql >> Database teknologi >  >> RDS >> Sqlserver

Omdøb en CHECK-begrænsning i SQL Server ved hjælp af T-SQL

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.


  1. OPRET SPROG plpython3u – PostgreSQL 9.6

  2. Håndtering af fejlhåndtering, mens du kører sqlplus fra shell-scripts

  3. MYSQL sum() for forskellige rækker

  4. Oprettelse af en ny database og ny forbindelse i Oracle SQL Developer