Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Преименувайте ограничение CHECK в SQL Server с помощта на T-SQL

Можете да използвате sp_rename системна съхранена процедура за преименуване на CHECK ограничение в SQL Server.

Целта на тази съхранена процедура е да ви позволи да преименувате създадени от потребителя обекти в текущата база данни. Така че можете да го използвате и за преименуване на други обекти като таблици, колони, типове данни с псевдоним и т.н.

Синтаксис

Синтаксисът на sp_rename става така:

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

Така че кодът ви може да е нещо подобно:

sp_rename 'schema_name.old_constraint_name', 'new_constraint_name';

Имайте предвид, че в документацията на Microsoft се посочва, че когато преименувате ограничения, трябва да квалифицирате съществуващото име с името на схемата.

Следващият пример демонстрира как да преименувате CHECK ограничение.

Пример 1 – Изберете ограничение за преименуване

Първо, нека изброим CHECK ограничения в базата данни, за да можем да решим кое да преименуваме.

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

Резултат:

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

Нека преименуваме второто ограничение ( chkValidEndDate ).

Нека премахнем Валиден част, така че да стане просто chkEndDate .

Пример 2 – Преименувайте ограничението

Изпълнете това, за да преименувате ограничението.

sp_rename 'dbo.chkValidEndDate', 'chkEndDate';

Така че старото (съществуващо) име е първо, следвано от новото име.

Така че сега, ако избера всички CHECK отново ограничения, получавам следния резултат.

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

Резултат:

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

Името на ограничението е променено.

Както споменахме, sp_rename съхранената процедура не се ограничава само до CHECK ограничения. Можете да използвате абсолютно същия синтаксис, за да преименувате ограничение за външен ключ, таблица, колона, псевдоним тип данни или всеки друг обект, дефиниран от потребителя.

Въпреки това, Microsoft препоръчва да не се преименуват съхранени процедури, тригери, потребителски дефинирани функции или изгледи. В такива случаи Microsoft ви препоръчва вместо това да пуснете обекта и да го създадете отново с новото име.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2016:Подобрения на групата за наличност

  2. SQL Server SHOWPLAN_TEXT

  3. Как да пренапишем Е РАЗЛИЧНО ОТ и НЕ Е РАЗЛИЧНО ОТ?

  4. Промяна на график на агент на SQL Server (T-SQL)

  5. Извършване на регулярни изрази (замяна) в SQL заявка