CREATE DEFAULT (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
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. Diese werden mit dem DEFAULT-Schlüsselwort von CREATE TABLE oder ALTER TABLE erstellt.
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 ('). Bei Integer-, 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.
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, binden Sie ihn mit sp_bindefault an eine Spalte oder einen Aliasdatentyp.
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 einzelnen Batch kombiniert werden.
Ein Standardwert muss gelöscht werden, bevor Sie einen neuen mit gleichem Namen erstellen. Bevor der Standardwert gelöscht wird, muss seine Bindung durch Ausführen von sp_unbindefault aufgehoben werden.
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 Sie beim Erstellen einer Spalte NOT NULL angeben und keinen Standardwert für sie erstellen, wird jedes Mal eine Fehlermeldung erzeugt, wenn ein Benutzer keinen Eintrag in dieser Spalte vornimmt. In der folgenden Tabelle wird die Beziehung zwischen dem Vorhandensein eines Standardwerts 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 | Fehler | default | error | error |
Um einen Standardwert umzubenennen, verwenden Sie sp_rename. Um einen Bericht über einen Standardwert zu erhalten, verwenden Sie sp_help.
Berechtigungen
Zur Verwendung 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 Zeichenstandards
Im folgenden Beispiel wird ein Zeichenstandardwert namens unknown
erstellt.
USE AdventureWorks2022;
GO
CREATE DEFAULT phonedflt AS 'unknown';
B. Binden eines Standards
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 Auslassen eines Eintrags unterscheidet sich vom expliziten Angeben von 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
sp_bindefault 'phonedflt', 'Person.PersonPhone.PhoneNumber';
Weitere Informationen
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)