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.

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


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


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'

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'

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'

Und außerdem: Setzen Sie die eckigen Klammern nicht in den neuen Namen. Andernfalls erhalten Sie möglicherweise einen Namen in Klammern
casenonsensitive
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.