Eine Einschränkung in SQL Server umbenennen?

79

Ist es möglich, eine Einschränkung in SQL Server umzubenennen? Ich möchte keine neue löschen und erstellen müssen, da diese Einschränkung andere bereits vorhandene Einschränkungen betrifft und ich diese neu erstellen / ändern muss.

mezamorph
quelle

Antworten:

75

Sie können mit sp_rename mit umbenennen@objtype = 'OBJECT'

Dies funktioniert für Objekte, die in sys.objects aufgeführt sind und Einschränkungen enthalten

gbn
quelle
14
Nur für den Fall, dass dies nicht funktioniert, heißt es in MSDN: "Beim Umbenennen einer Einschränkung muss das Schema angegeben werden, zu dem die Einschränkung gehört."
Schwarzlicht
1
Für PK-Einschränkungen muss keine @objtype = 'OBJECT'Angabe gemacht werden. Geben Sie einfach den alten und den neuen Namen an.
pkuderov
71

Nach einigem weiteren Graben stellte ich fest, dass es tatsächlich in dieser Form vorliegen muss:

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

Quelle

ozz
quelle
7
Dies ist die genauere Antwort. Die anderen Formulare funktionieren nur, weil die meisten Benutzer alle ihre Tabellen im Standardschema ablegen (normalerweise "dbo :)" und Sie das Standardschema weglassen können. Wenn Sie jedoch mehrere Schemas verwenden, ist dies korrekt (und Sie können immer "dbo" angeben). ).
Godeke
Aus der Quelle sieht es nicht so aus, als ob Sie die N'OBJECT'-Referenz benötigen
Abrham Smith
50

Sie können sp_rename verwenden .

sp_rename 'CK_Ax', 'CK_Ax1'
Mikael Eriksson
quelle
2
+1 Dies wird von SSMS beim Umbenennen von Einschränkungen verwendet. Für eine PK-Einschränkung wird sie INDEXals Objekttyp übergeben.
Martin Smith
3
Es ist auch wichtig zu beachten, dass CHECK-Einschränkungen im Gegensatz zu PKs kein Tabellenpräfix für den ersten sp_renameParameter erfordern und fehlschlagen, wenn Sie eines verwenden.
Mattmc3
8

Antwort ist wahr:

exec sp_rename 
@objname = 'Old_Constraint',
@newname = 'New_Constraint',
@objtype = 'object'
Rojib
quelle
3

Ich weiß, dass dies eine alte Frage ist, aber ich fand das Folgende zusätzlich zu den anderen großartigen Antworten sehr hilfreich:

Wenn die umzubenennende Einschränkung einen Punkt (Punkt) enthält, müssen Sie sie wie folgt in eckige Klammern setzen:

sp_rename 'schema.[Name.With.Period.In.It]', 'New.Name.With.Period.In.It'
Zwinkert
quelle
Und außerdem: Setzen Sie die eckigen Klammern nicht in den neuen Namen. Andernfalls erhalten Sie möglicherweise einen Namen in Klammern
casenonsensitive