sql >> Database >  >> RDS >> Sqlserver

De naam van een CHECK-beperking in SQL Server wijzigen met T-SQL

U kunt de sp_rename . gebruiken systeem opgeslagen procedure om een ​​CHECK te hernoemen beperking in SQL Server.

Het doel van deze opgeslagen procedure is dat u door de gebruiker gemaakte objecten in de huidige database kunt hernoemen. U kunt het dus ook gebruiken om andere objecten te hernoemen, zoals tabellen, kolommen, aliasgegevenstypen, enz.

Syntaxis

De syntaxis van sp_rename gaat als volgt:

sp_rename [ @objname = ] 'object_name' , [ @newname = ] 'new_name'   
    [ , [ @objtype = ] 'object_type' ]

Dus je code zou er ongeveer zo uit kunnen zien:

sp_rename 'schema_name.old_constraint_name', 'new_constraint_name';

Merk op dat in de Microsoft-documentatie staat dat bij het hernoemen van beperkingen u de bestaande naam moet kwalificeren met de schemanaam.

Het volgende voorbeeld laat zien hoe u een CHECK . hernoemt beperking.

Voorbeeld 1 – Kies een beperking om te hernoemen

Laten we eerst de CHECK . opsommen beperkingen in de database, zodat we kunnen beslissen welke we willen hernoemen.

SELECT 
  name,
  SCHEMA_NAME(schema_id) AS 'Schema',
  OBJECT_NAME(parent_object_id) AS 'Table',
  definition
FROM sys.check_constraints;

Resultaat:

+-----------------+----------+----------------+----------------------------------------+
| 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')          |
+-----------------+----------+----------------+----------------------------------------+

Laten we de tweede beperking hernoemen ( chkValidEndDate ).

Laten we de Geldig . verwijderen deel zodat het gewoon chkEndDate . wordt .

Voorbeeld 2 – Hernoem de beperking

Voer dit uit om de beperking te hernoemen.

sp_rename 'dbo.chkValidEndDate', 'chkEndDate';

Dus de oude (bestaande) naam komt eerst, gevolgd door de nieuwe naam.

Dus als ik nu alle CHECK . selecteer beperkingen opnieuw, krijg ik het volgende resultaat.

SELECT 
  name,
  SCHEMA_NAME(schema_id) AS 'Schema',
  OBJECT_NAME(parent_object_id) AS 'Table',
  definition
FROM sys.check_constraints;

Resultaat:

+-------------+----------+----------------+----------------------------------------+
| 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')          |
+-------------+----------+----------------+----------------------------------------+

De naam van de beperking is gewijzigd.

Zoals gezegd, de sp_rename opgeslagen procedure is niet beperkt tot alleen CHECK beperkingen. U kunt exact dezelfde syntaxis gebruiken om een ​​externe-sleutelbeperking, een tabel, kolom, aliasgegevenstype of een ander door de gebruiker gedefinieerd object te hernoemen.

Microsoft raadt echter af om opgeslagen procedures, triggers, door de gebruiker gedefinieerde functies of weergaven te hernoemen. In dergelijke gevallen raadt Microsoft u aan om het object te laten vallen en het opnieuw te maken met de nieuwe naam.


  1. Maandelijks actieve gebruikers (MAU) berekenen in MySQL

  2. Hoe CHAR() werkt in MariaDB

  3. Een database handmatig comprimeren en repareren in Access 2016

  4. “PostgreSQL 9.0 High Performance” boek is uit