Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zmień nazwę ograniczenia CHECK w programie SQL Server za pomocą T-SQL

Możesz użyć sp_rename systemowa procedura składowana do zmiany nazwy CHECK ograniczenie w SQL Server.

Celem tej procedury składowanej jest umożliwienie zmiany nazw obiektów utworzonych przez użytkownika w bieżącej bazie danych. Możesz więc użyć go również do zmiany nazw innych obiektów, takich jak tabele, kolumny, typy danych aliasów itp.

Składnia

Składnia sp_rename idzie tak:

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

Twój kod może wyglądać mniej więcej tak:

sp_rename 'schema_name.old_constraint_name', 'new_constraint_name';

Zwróć uwagę, że dokumentacja Microsoft stwierdza, że ​​podczas zmiany nazwy ograniczeń musisz zakwalifikować istniejącą nazwę do nazwy schematu.

Poniższy przykład pokazuje, jak zmienić nazwę CHECK ograniczenie.

Przykład 1 – Wybierz wiązanie do zmiany nazwy

Najpierw wypiszmy CHECK ograniczenia w bazie danych, dzięki czemu możemy zdecydować, którego nazwę zmienić.

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

Wynik:

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

Zmieńmy nazwę drugiego ograniczenia ( chkValidEndDate ).

Usuńmy Ważny część tak, aby była po prostu chkEndDate .

Przykład 2 – zmiana nazwy wiązania

Uruchom to, aby zmienić nazwę ograniczenia.

sp_rename 'dbo.chkValidEndDate', 'chkEndDate';

Tak więc najpierw jest stara (istniejąca) nazwa, a po niej nowa nazwa.

Więc teraz, jeśli wybiorę wszystkie CHECK ponownie ograniczenia, otrzymuję następujący wynik.

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

Wynik:

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

Nazwa ograniczenia została zmieniona.

Jak wspomniano, sp_rename procedura składowana nie ogranicza się tylko do CHECK ograniczenia. Możesz użyć dokładnie tej samej składni, aby zmienić nazwę ograniczenia klucza obcego, tabeli, kolumny, typu danych aliasu lub dowolnego innego obiektu zdefiniowanego przez użytkownika.

Firma Microsoft odradza jednak zmienianie nazw procedur składowanych, wyzwalaczy, funkcji zdefiniowanych przez użytkownika lub widoków. W takich przypadkach firma Microsoft zaleca upuszczenie obiektu i ponowne utworzenie go z nową nazwą.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Crystal Reports a usługi raportowania Microsoft SQL Server

  2. Monitoruj bazę danych SQL przez SP_WhoIsActive lub FogLight | Rozwiązywanie problemów z wydajnością serwera SQL -1

  3. SQL Server FOR XML Path tworzy powtarzające się węzły

  4. sp_executesql działa wolno z parametrami

  5. Wykluczyć kolumnę za pomocą SELECT * [oprócz kolumny A] FROM tabela A?