2012-01-03 22 views

Odpowiedz

53

Można zmienić nazwę używając sp_rename użyciu @objtype = 'OBJECT'

to działa na obiektach wymienionych w sys.objects który zawiera ograniczenia

+9

Tylko w przypadku, gdy nie można uzyskać to do pracy, jest napisane w MSDN - * "Podczas zmiany nazwy ograniczenia należy określić schemat, do którego należy ograniczenie." * –

+0

Dla ograniczeń PK nie ma potrzeby określenia '@objtype = 'OBJECT''. Po prostu podaj starą nazwę i nową nazwę. – pkuderov

36

można użyć sp_rename.

sp_rename 'CK_Ax', 'CK_Ax1' 
+2

+1 To właśnie używa SSMS podczas zmiany nazwy wiązań. Dla więzów PK przekazuje "INDEX" jako typ obiektu. –

+2

Należy również zauważyć, że ograniczenia CHECK, w przeciwieństwie do PKs, nie wymagają prefiksu tabeli w pierwszym parametrze 'sp_rename', i nie powiedzie się, jeśli go używasz. – mattmc3

30

Po jakimś bardziej kopanie, stwierdziliśmy, że to rzeczywiście musi być w tej formie:

EXEC sp_rename N'schema.MyIOldConstraint', N'MyNewConstraint', N'OBJECT' 

Source

+1

To jest bardziej precyzyjna odpowiedź. Inne formy działają tylko dlatego, że większość ludzi zrzuca wszystkie tabele do domyślnego schematu (zwykle "dbo :) i możesz pominąć domyślny schemat, ale jeśli używasz wielu schematów, jest to poprawne (i zawsze możesz podać" dbo "). – Godeke

7

odpowiedź jest prawdziwe:

exec sp_rename 
@objname = 'Old_Constraint', 
@newname = 'New_Constraint', 
@objtype = 'object' 
0

Znam ten to stare pytanie, ale znalazłem następujące, aby być bardzo pomocne, oprócz innych wspaniałych odpowiedzi:

Jeśli ograniczenie zostać przemianowany ma okres w nim (kropka), to trzeba ją ująć w nawiasy kwadratowe, tak:

sp_rename 'schema.[Name.With.Period.In.It]', 'New.Name.With.Period.In.It' 
Powiązane problemy