Freigeben über


STANDARD ERSTELLEN (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzSQL-Datenbank in Microsoft Fabric

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.

Wichtig

Diese Funktion wird in einer zukünftigen Version von SQL Serverentfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden. Verwenden Sie stattdessen Standarddefinitionen, die mit dem DEFAULT Schlüsselwort ALTER TABLE oder CREATE TABLE.

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 Standardwerts. Namen für Standardwerte müssen den Regeln für Bezeichner entsprechen. Das Angeben des Standardbesitzernamens ist optional.

constant_expression

Ein Ausdruck, der nur konstante Werte enthält (nicht zulässig sind Namen von Spalten oder anderen Datenbankobjekten). Sie können jede Konstante, jede integrierte Funktion oder jeden mathematischen Ausdruck verwenden, außer solchen, die Aliasdatentypen enthalten. Benutzerdefinierte Funktionen können nicht verwendet werden. Setzen Sie Zeichen- und Datumskonstanten in einfache Anführungszeichen ('); Währungs-, Ganzzahl- und Gleitkommakonstanten erfordern keine Anführungszeichen. Binäre Daten müssen vorangestellt 0xwerden, und geldpolitische Daten müssen einem Dollarzeichen ($) vorangestellt werden. Der Standardwert muss mit dem Datentyp der Spalte kompatibel sein.

Bemerkungen

Sie können den Namen eines Standardwerts nur in der aktuellen Datenbank erstellen. Innerhalb einer Datenbank müssen die Namen für Standardwerte für jedes Schema eindeutig sein. Wenn Sie einen Standardwert erstellen, verwenden sp_bindefault Sie diese, um sie an eine Spalte oder an einen Aliasdatentyp zu binden.

Falls der Standardwert mit der Spalte, an die er gebunden ist, nicht kompatibel 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 einzigen Batch kombiniert werden.

Ein Standardwert muss gelöscht werden, bevor Sie einen neuen mit gleichem Namen erstellen. Außerdem muss der Standardwert ungebunden sein, indem er ausgeführt sp_unbindefault wird, bevor er abgelegt 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.
  • Entweder werden die DEFAULT VALUESDEFAULT Schlüsselwörter verwendet INSERT , um Standardwerte einzufügen.

Wenn Sie beim Erstellen einer Spalte angeben NOT NULL und keinen Standardwert dafür erstellen, wird eine Fehlermeldung generiert, wenn ein Benutzer einen Eintrag in dieser Spalte nicht vornehmen kann. Die folgende Tabelle veranschaulicht die Beziehung zwischen dem Vorhandensein eines Standardwerts und der Definition einer Spalte als NULL oder NOT NULL. Das jeweilige Ergebnis geht aus den Einträgen in der Tabelle hervor.

Spaltendefinition Kein Eintrag, kein Standardwert Kein Eintrag, Standardwert Eingabetaste NULL, keine Standardeinstellung Eingabetaste NULL, Standard
NULL NULL Standard NULL NULL
NOT NULL Fehler Standard Fehler Fehler

Um einen Standardwert umzubenennen, verwenden Sie sp_rename "For a report on a default", use sp_help.

Berechtigungen

Um mindestens eine Berechtigung zu verwenden CREATE DEFAULT, muss CREATE DEFAULT ein Benutzer über die Berechtigung in der aktuellen Datenbank und ALTER über die Berechtigung für das Schema verfügen, in dem der Standardwert erstellt wird.

Beispiele

A. Erstellen eines Standardzeichens

Im folgenden Beispiel wird ein Zeichenstandardwert namens unknown erstellt.

USE AdventureWorks2022;
GO

CREATE DEFAULT phonedflt
    AS 'unknown';

B. Binden einer Standardeinstellung

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.

Hinweis

Das Weglassen eines Eintrags unterscheidet sich von der expliziten Angabe NULL in einer INSERT Anweisung.

Da kein Standardwert namens phonedflt vorhanden ist, tritt bei der folgenden Transact-SQL-Anweisung ein Fehler auf. Dieses Beispiel dient nur zur Veranschaulichung.

USE AdventureWorks2022;
GO

EXECUTE sp_bindefault 'phonedflt', 'Person.PersonPhone.PhoneNumber';