Befehl zum Hinzufügen einer Standardeinschränkung

81

Es scheint mindestens zwei Möglichkeiten zu geben, eine Standardeinschränkung mit direktem T-SQL hinzuzufügen. Stimmt es, dass der einzige Unterschied zwischen den beiden folgenden darin besteht, dass die zweite Methode speziell einen Namen für die Einschränkung erstellt und die erste Methode einen von SQL Server generierten hat?

ALTER TABLE [Common].[PropertySetting] ADD DEFAULT ((1)) FOR [Active];
ALTER TABLE [Common].[PropertySetting] ADD CONSTRAINT [DF_PropertySetting_Active) DEFAULT ((1)) FOR [Active];
Randy Minder
quelle

Antworten:

104

Ziemlich genau, ja für einen ALTER TABLE

Sie können in einem Schritt auch standardmäßig eine Spalte für CREATE oder ALTER hinzufügen.

ALTER TABLE foo ADD bar varchar(100) CONSTRAINT DF_Foo_Bar DEFAULT ('bicycle')
ALTER TABLE foo ADD bar varchar(100) DEFAULT ('bicycle')

Wie Sie bereits bemerkt haben, generiert das System einen Namen, wenn keiner angegeben ist. CONSTRAINT constraint_nameist optional, sagt MSDN. Gleiches gilt für jede Spalte oder Tabelle CONSTRAINT

Bearbeiten Wenn die Spalte bereits erstellt wurde und Sie nur die Einschränkung hinzufügen möchten, verwenden Sie:

ALTER TABLE TableName ADD CONSTRAINT DF_Foo_Bar DEFAULT 'bicycle' FOR FieldName;
gbn
quelle
3
Kann ich stattdessen einen generierten Namen verwenden DF_Foo_Bar, auch wenn die Spalte bereits vorhanden ist?
Slartidan