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ą.