Zmienić nazwę ograniczenia w programie SQL Server?

83

Czy można zmienić nazwę ograniczenia w programie SQL Server? Nie chcę usuwać i tworzyć nowego, ponieważ to ograniczenie wpływa na inne już istniejące ograniczenia i będę musiał je odtworzyć / zmienić.

mezamorficzny
źródło

Odpowiedzi:

77

Możesz zmienić nazwę za pomocą sp_rename za pomocą@objtype = 'OBJECT'

Działa to na obiektach wymienionych w sys.objects, które zawierają ograniczenia

gbn
źródło
14
Na wypadek, gdybyś nie mógł tego uruchomić, w witrynie MSDN jest napisane - „Podczas zmiany nazwy ograniczenia należy określić schemat, do którego należy ograniczenie”.
Black Light
1
W przypadku ograniczeń PK nie ma potrzeby @objtype = 'OBJECT'określania. Po prostu podaj starą nazwę i nową nazwę.
pkuderov
77

Po dłuższym kopaniu stwierdziłem, że faktycznie musi to być w tej formie:

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

Źródło

ozz
źródło
7
To jest dokładniejsza odpowiedź. Inne formularze działają tylko dlatego, że większość ludzi zrzuca wszystkie swoje 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,
Ze źródła wygląda na to, że nie potrzebujesz referencji N'OBJECT '
Abrham Smith
52

Możesz użyć sp_rename .

sp_rename 'CK_Ax', 'CK_Ax1'
Mikael Eriksson
źródło
2
+1 To jest to, czego używa SSMS podczas zmiany nazw ograniczeń. W przypadku ograniczenia PK przechodzi INDEXjako typ obiektu.
Martin Smith
3
Należy również zauważyć, że ograniczenia CHECK, w przeciwieństwie do PK, nie wymagają przedrostka tabeli na pierwszym sp_renameparametrze i zawiodą, jeśli go użyjesz.
mattmc3
8

odpowiedź jest prawdziwa:

exec sp_rename 
@objname = 'Old_Constraint',
@newname = 'New_Constraint',
@objtype = 'object'
rojib
źródło
4

Wiem, że to stare pytanie, ale oprócz innych świetnych odpowiedzi bardzo pomocne okazały się następujące:

Jeśli ograniczenie, które ma zostać zmienione, zawiera kropkę (kropkę), należy ująć je w nawiasy kwadratowe, na przykład:

sp_rename 'schema.[Name.With.Period.In.It]', 'New.Name.With.Period.In.It'
Mruga
źródło
1
A także: nie umieszczaj nawiasów kwadratowych w nowej nazwie. W przeciwnym razie możesz skończyć z nazwą zawierającą nawiasy
wrażliwe na wielkość liter