473 Stimmen

So legen Sie einen Standardwert für eine vorhandene Spalte fest

Dies funktioniert nicht in SQL Server 2008:

ALTER TABLE Employee ALTER COLUMN CityBorn SET DEFAULT 'SANDNES'

Der Fehler ist:

Falsche Syntax in der Nähe des Schlüsselworts 'SET'.

Was mache ich falsch?

1 Stimmen

Was haben Sie in MSDN ALTER TABLE gelesen...? msdn.microsoft.com/de-us/library/ms187742(SQL.90).aspx

2 Stimmen

0 Stimmen

10voto

tibx Punkte 732

Für den Fall, dass bereits eine Einschränkung mit ihrem Standardnamen existiert:

-- Drop existing default constraint on Employee.CityBorn
DECLARE @default_name varchar(256);
SELECT @default_name = [name] FROM sys.default_constraints WHERE parent_object_id=OBJECT_ID('Employee') AND COL_NAME(parent_object_id, parent_column_id)='CityBorn';
EXEC('ALTER TABLE Employee DROP CONSTRAINT ' + @default_name);

-- Add default constraint on Employee.CityBorn
ALTER TABLE Employee ADD CONSTRAINT df_employee_1 DEFAULT 'SANDNES' FOR CityBorn;

9voto

Sunil Sharma Punkte 1225

Es gibt zwei Szenarien, in denen der Standardwert für eine Spalte geändert werden kann,

  1. Zum Zeitpunkt der Erstellung der Tabelle
  2. Ändern Sie die vorhandene Spalte einer vorhandenen Tabelle.

  1. Zum Zeitpunkt der Erstellung der Tabelle / Erstellung einer neuen Spalte.

Abfrage

create table table_name
(
    column_name datatype default 'any default value'
);
  1. Vorhandene Spalte für eine vorhandene Tabelle ändern

In diesem Fall erlaubt mein SQL-Server nicht, den vorhandenen Standardeinschränkungswert zu ändern. Um den Standardwert zu ändern, müssen wir also die vorhandene system- oder benutzergenerierte Standardeinschränkung löschen. Und danach kann der Standardwert für eine bestimmte Spalte festgelegt werden.

Befolgen Sie einige Schritte:

  1. Auflistung aller vorhandenen Standardwerteinschränkungen für Spalten.

Führen Sie diese Systemdatenbankprozedur aus, die den Tabellennamen als Parameter benötigt. Sie gibt eine Liste aller Beschränkungen für alle Spalten der Tabelle zurück.

execute [dbo].[sp_helpconstraint] 'table_name'
  1. Vorhandene Standardbeschränkung für eine Spalte löschen.

Syntax:

alter table 'table_name' drop constraint 'constraint_name'
  1. Neue Standardwerteinschränkung für diese Spalte hinzufügen:

Syntax:

alter table 'table_name' add default 'default_value' for 'column_name'

Prost @!!!

8voto

Abnous Nayyeri Punkte 1065

Sie können folgende Syntax verwenden. Weitere Informationen finden Sie in dieser Frage und den Antworten: Hinzufügen einer Spalte mit einem Standardwert zu einer vorhandenen Tabelle in SQL Server

Syntax :

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES

Beispiel:

ALTER TABLE SomeTable
ADD SomeCol Bit NULL --Or NOT NULL.
CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is 
autogenerated.
DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.

Eine andere Möglichkeit:

Klicken Sie mit der rechten Maustaste auf die Tabelle und klicken Sie auf Design, dann auf die Spalte, für die Sie einen Standardwert festlegen möchten.

Dann fügen Sie unten auf der Seite einen Standardwert oder eine Bindung hinzu: etwas wie '1' für string oder 1 für int.

7voto

Mise Punkte 2787

Erste Fallbeschränkungen

https://stackoverflow.com/a/49393045/2547164

DECLARE @ConstraintName nvarchar(200)
SELECT @ConstraintName = Name FROM SYS.DEFAULT_CONSTRAINTS
WHERE PARENT_OBJECT_ID = OBJECT_ID('__TableName__')
AND PARENT_COLUMN_ID = (SELECT column_id FROM sys.columns
                        WHERE NAME = N'__ColumnName__'
                        AND object_id = OBJECT_ID(N'__TableName__'))
IF @ConstraintName IS NOT NULL
EXEC('ALTER TABLE __TableName__ DROP CONSTRAINT ' + @ConstraintName)

Zweitens: Standardwert erstellen

ALTER TABLE [table name] ADD DEFAULT [default value] FOR [column name]

6voto

steave Punkte 163
ALTER TABLE [dbo].[Employee] ADD  DEFAULT ('N') FOR [CityBorn]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X