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