CREATE DEFAULT (Transact-SQL)

Erstellt ein Objekt, das als Standardwert bezeichnet wird. Wenn ein Standardwert an eine Spalte oder einen Aliasdatentyp gebunden ist, gibt er den Wert an, der in diese Spalte (oder im Fall eines Aliasdatentyps in alle Spalten) eingefügt werden soll, wenn beim Einfügen nicht explizit ein Wert angegeben ist.

ms173565.note(de-de,SQL.90).gifWichtig:
CREATE DEFAULT wird in einer der zukünftigen Versionen von Microsoft SQL Server entfernt. Vermeiden Sie die Verwendung von CREATE DEFAULT bei neuen Entwicklungsarbeiten, und planen Sie die Änderung von Anwendungen, die CREATE DEFAULT zurzeit verwenden. Verwenden Sie anstelle dessen Standarddefinitionen, die mithilfe des DEFAULT-Schlüsselwortes von ALTER TABLE oder CREATE TABLE erstellt werden. Weitere Informationen finden Sie unter Erstellen und Ändern von DEFAULT-Definitionen.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

CREATE DEFAULT [ schema_name . ] default_name 
AS constant_expression [ ; ]

Argumente

  • schema_name
    Der Name des Schemas, zu dem der Standardwert gehört.
  • default_name
    Der Name des Standardwertes. Namen für Standardwerte müssen den Regeln für Bezeichner entsprechen. Das Angeben des Standardbesitzernamens ist optional.
  • constant_expression
    Ist ein Ausdruck, der nur konstante Werte enthält (nicht zulässig sind Namen von Spalten oder anderen Datenbankobjekten). Es kann jede Konstante, jede integrierte Funktion oder jeder mathematische Ausdruck verwendet werden, außer solchen, die Aliasdatentypen enthalten. Benutzerdefinierte Funktionen können nicht verwendet werden. Schließen Sie Zeichen- und Datumskonstanten in einfache Anführungszeichen (') ein. Bei ganzzahligen Konstanten, Währungs- und Gleitkommakonstanten sind keine Anführungszeichen erforderlich. Binären Daten muss 0x vorangestellt werden, und Währungsdaten muss das Dollarzeichen ($) vorangestellt werden. Der Standardwert muss mit dem Datentyp der Spalte kompatibel sein.

Hinweise

Der Name eines Standardwertes kann nur in der aktuellen Datenbank erstellt werden. Innerhalb einer Datenbank müssen die Namen für Standardwerte für jedes Schema eindeutig sein. Verwenden Sie nach dem Erstellen eines Standardwertes sp_bindefault, um ihn an eine Spalte oder einen Aliasdatentyp zu binden.

Falls der Standardwert inkompatibel mit dem Datentyp der Spalte ist, an die er gebunden ist, erzeugt SQL Server beim Versuch, den Standardwert einzufügen, eine Fehlermeldung. N/V kann z. B. nicht als Standardwert für numeric-Spalten verwendet werden.

Falls der Standardwert zu lang für die Spalte ist, an die er gebunden ist, wird er gekürzt.

CREATE DEFAULT-Anweisungen können nicht mit anderen Transact-SQL-Anweisungen in einem einzelnen Batch kombiniert werden.

Ein Standardwert muss gelöscht werden, bevor ein neuer Standardwert mit dem gleichen Namen erstellt wird. Außerdem muss seine Bindung durch Ausführen von sp_unbindefault aufgehoben werden, bevor er gelöscht wird.

Falls einer Spalte sowohl ein Standardwert als auch eine Regel zugeordnet ist, darf der Standardwert nicht diese Regel verletzen. Ein Standardwert, der gegen eine Regel verstößt, wird nicht eingefügt. Bei jedem Versuch, einen solchen Standardwert einzufügen, erzeugt SQL Server eine Fehlermeldung.

Ist ein Standardwert an eine Spalte gebunden, wird er unter folgenden Umständen eingefügt:

  • Es wird kein Wert explizit eingefügt.
  • Das DEFAULT VALUES- oder DEFAULT-Schlüsselwort wird mit INSERT verwendet, um Standardwerte einzufügen.

Falls beim Erstellen einer Spalte NOT NULL angegeben und für die Spalte kein Standardwert erstellt ist, wird jedes Mal eine Fehlermeldung erzeugt, wenn ein Benutzer keinen Eintrag in dieser Spalte bereitstellt. In der folgenden Tabelle wird die Beziehung zwischen dem Vorhandensein eines Standardwertes und der Definition einer Spalte als NULL oder NOT NULL verdeutlicht. Das jeweilige Ergebnis geht aus den Einträgen in der Tabelle hervor.

Spaltendefinition Kein Eintrag, kein Standardwert Kein Eintrag, Standardwert Eingabe von NULL, kein Standardwert Eingabe von NULL, Standardwert

NULL

NULL

default

NULL

NULL

NOT NULL

Error

default

error

error

ms173565.note(de-de,SQL.90).gifHinweis:
Ob SQL Server eine leere Zeichenfolge als einzelnes Leerzeichen oder als echte leere Zeichenfolge interpretiert, wird von der Einstellung für sp_dbcmptlevel gesteuert. Ist der Kompatibilitätsgrad kleiner oder gleich 65, so interpretiert SQL Server leere Zeichenfolgen als einzelne Leerzeichen. Ist der Kompatibilitätsgrad gleich 70, so interpretiert SQL Server leere Zeichenfolgen als leere Zeichenfolgen. Weitere Informationen finden Sie unter sp_dbcmptlevel (Transact-SQL).

Um einen Standardwert umzubenennen, verwenden Sie sp_rename. Um einen Bericht über einen Standardwert zu erhalten, verwenden Sie sp_help.

Berechtigungen

Für die Ausführung von CREATE DEFAULT benötigt ein Benutzer zumindest die CREATE DEFAULT-Berechtigung für die aktuelle Datenbank sowie die ALTER-Berechtigung für das Schema, in dem der Standardwert erstellt wird.

Beispiele

A. Erstellen eines einfachen Zeichenstandardwertes

Im folgenden Beispiel wird ein Zeichenstandardwert namens unknown erstellt.

USE AdventureWorks;
GO
CREATE DEFAULT phonedflt AS 'unknown';

B. Binden eines Standardwertes

Im folgenden Beispiel wird der in Beispiel A erstellte Standardwert an eine Spalte gebunden. Der Standardwert tritt nur dann in Kraft, wenn kein Eintrag in der Phone-Spalte der Contact-Tabelle angegeben ist. Beachten Sie, dass sich das Auslassen eines Eintrags vom expliziten Angeben von NULL in einer INSERT-Anweisung unterscheidet.

Da kein Standardwert namens phonedflt vorhanden ist, schlägt die folgende Transact-SQL-Anweisung fehl. Dieses Beispiel dient nur zur Veranschaulichung.

USE AdventureWorks;
GO
sp_bindefault 'phonedflt', 'Person.Contact.Phone';

Siehe auch

Verweis

ALTER TABLE (Transact-SQL)
CREATE RULE (Transact-SQL)
CREATE TABLE (Transact-SQL)
DROP DEFAULT (Transact-SQL)
DROP RULE (Transact-SQL)
Ausdrücke (Transact-SQL)
INSERT (Transact-SQL)
sp_bindefault (Transact-SQL)
sp_help (Transact-SQL)
sp_helptext (Transact-SQL)
sp_rename (Transact-SQL)
sp_unbindefault (Transact-SQL)

Andere Ressourcen

Batches
Verwenden von Bezeichnern als Objektnamen

Hilfe und Informationen

Informationsquellen für SQL Server 2005