sp_bindefault (Transact-SQL)
Bindet einen Standard an eine Spalte oder einen Aliasdatentyp.
Wichtig: |
---|
Dieses Feature wird in einer zukünftigen Version von Microsoft SQL Server entfernt. Verwenden Sie dieses Feature beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird. Es wird empfohlen, dass Sie Standarddefinitionen stattdessen mit dem DEFAULT-Schlüsselwort der Anweisungen ALTER TABLE oder CREATE TABLE erstellen. Weitere Informationen finden Sie unter Erstellen und Ändern von DEFAULT-Definitionen. |
Transact-SQL-Syntaxkonventionen
Syntax
sp_bindefault [ @defname = ] 'default' ,
[ @objname = ] 'object_name'
[ , [ @futureonly = ] 'futureonly_flag' ]
Argumente
[ @defname= ] 'default'
Der Name des Standards, der von CREATE DEFAULT erstellt wird. default ist vom nvarchar(776)-Datentyp und hat keinen Standard.
[ @objname= ] 'object_name'
Der Name der Tabelle und Spalte oder der Aliasdatentyp, an den der Standard gebunden werden soll. object_name ist vom nvarchar(776),-Datentyp und hat keinen Standard. object_name kann nicht mit den Datentypen varchar(max), nvarchar(max), varbinary(max), xml oder CLR-benutzerdefinierten Typen definiert werden.
Wenn object_name ein einteiliger Name ist, wird er als Aliasdatentyp aufgelöst. Ein zwei- oder dreiteiliger Name wird zunächst als Tabelle und Spalte aufgelöst. Wenn die Auflösung fehlschlägt, wird er als Aliasdatentyp aufgelöst. Bereits vorhandene Spalten eines benutzerdefinierten Datentyps erben standardmäßig default, es sei denn, an die Spalte ist direkt ein Standard gebunden. Ein Standard kann nicht an eine Spalte des Typs text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, timestamp oder eines CLR-benutzerdefinierten Typs gebunden sein. Darüber hinaus kann ein Standard nicht an eine Spalte mit der IDENTITY-Eigenschaft, eine berechnete Spalte oder eine Spalte gebunden sein, die bereits eine DEFAULT-Einschränkung hat.
Hinweis: |
---|
object_name kann eckige Klammern [] als begrenzte Bezeichner enthalten. Weitere Informationen finden Sie unter Begrenzte Bezeichner (Datenbankmodul). |
[ @futureonly= ] 'futureonly_flag'
Wird nur beim Binden eines Standards an einen Aliasdatentyp verwendet. futureonly_flag ist vom varchar(15)-Datentyp, der Standardwert ist NULL. Wenn dieser Parameter auf den Wert futureonly festgelegt wird, können vorhandene Spalten dieses Datentyps den neuen Standard nicht erben. Dieser Parameter wird nie beim Binden eines Standards an eine Spalte verwendet. Wenn futureonly_flag den Wert NULL hat, wird der neue Standard an alle Spalten des Aliasdatentyps gebunden, die aktuell keinen Standard aufweisen oder die den vorhandenen Standard des Aliasdatentyps verwenden.
Rückgabecodewerte
0 (Erfolg) oder 1 (Fehler)
Hinweise
Sie können einen neuen Standard mit sp_bindefault an eine Spalte (obwohl empfohlen wird, die DEFAULT-Einschränkung zu verwenden) oder an einen Aliasdatentyp binden, ohne die Bindung eines vorhandenen Standards aufzuheben. Der alte Standard wird außer Kraft gesetzt. Sie können einen Standard nicht an einen SQL Server 2005-Systemdatentyp oder an einen CLR-benutzerdefinierten Typ binden. Ist der Standard nicht kompatibel mit der Spalte, an die er gebunden wurde, gibt SQL Server-Datenbankmodul eine Fehlermeldung zurück, wenn der Standardwert eingefügt werden soll (nicht beim Binden).
Vorhandene Spalten des Aliasdatentyps erben den neuen Standard, es sei denn, ein Standard wurde direkt an sie gebunden oder futureonly_flag wurde mit futureonly angegeben. Neue Spalten des Aliasdatentyps erben immer den Standard.
Wenn Sie einen Standard an eine Spalte binden, werden der sys.columns-Katalogsicht zugehörige Informationen hinzugefügt. Wenn Sie einen Standard an einen Aliasdatentyp binden, werden der sys.types-Katalogsicht zugehörige Informationen hinzugefügt.
Berechtigungen
Der Benutzer muss Besitzer der Tabelle oder Mitglied der festen Serverrolle sysadmin, der festen Datenbankrolle db_owner oder der festen Datenbankrolle db_ddladmin sein.
Beispiele
A. Binden eines Standards an eine Spalte
In der aktuellen Datenbank wurde mit CREATE DEFAULT ein Standard mit dem Namen today
definiert. Im folgenden Beispiel wird der Standard an die HireDate
-Spalte der Employee
-Tabelle gebunden. Wird zur Employee
-Tabelle eine Zeile hinzugefügt und werden für die HireDate
-Spalte keine Daten angegeben, erhält die Spalte den Wert des Standards today
.
USE master;
GO
EXEC sp_bindefault 'today', 'HumanResources.Employee.HireDate';
B. Binden eines Standards an einen Aliasdatentyp
Ein Standard namens def_ssn
und ein Aliasdatentyp namens ssn
sind bereits vorhanden. Im folgenden Beispiel wird der Standard def_ssn
an den Typ ssn
gebunden. Wenn eine Tabelle erstellt wird, wird der Standard von allen Spalten geerbt, denen der Aliasdatentyp ssn
zugewiesen ist. Vorhandene Spalten des Typs ssn erben ebenfalls den Standard def_ssn, sofern nicht futureonly als Wert für futureonly_flag angegeben wird oder an die Spalte nicht direkt ein Standard gebunden ist. An Spalten gebundene Standards haben stets Vorrang vor den an Datentypen gebundenen Standards.
USE master;
GO
EXEC sp_bindefault 'def_ssn', 'ssn';
C. Verwenden von futureonly_flag
Im folgenden Beispiel bindet der Standard def_ssn
an den Aliasdatentyp ssn
gebunden. Da futureonly angegeben wurde, sind vorhandene Spalten des Typs ssn
nicht betroffen.
USE master;
GO
EXEC sp_bindefault 'def_ssn', 'ssn', 'futureonly';
D. Verwenden von begrenzten Bezeichnern
Im folgenden Beispiel wird die Verwendung von begrenzten Bezeichnern, [t.1]
, in object_name gezeigt.
USE master;
GO
CREATE TABLE [t.1] (c1 int)
-- Notice the period as part of the table name.
EXEC sp_bindefault 'default1', '[t.1].c1'
-- The object contains two periods;
-- the first is part of the table name,
-- and the second distinguishes the table name from the column name.
Siehe auch
Verweis
Gespeicherte Prozeduren für das Datenbankmodul (Transact-SQL)
CREATE DEFAULT (Transact-SQL)
DROP DEFAULT (Transact-SQL)
sp_unbindefault (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)