sp_bindefault (Transact-SQL)

 

DIESES THEMA GILT FÜR:jaSQL Server (ab 2008)jaAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data Warehouse

Bindet einen Standard an eine Spalte oder einen Aliasdatentyp.

System_CAPS_ICON_important.jpg Wichtig


Dieses Feature wird in einer künftigen Version von Microsoft SQL Server entfernt. Verwenden Sie dieses Feature nicht in einer neuen Entwicklungsarbeit, und ändern Sie Anwendungen, die dieses Feature verwenden, so schnell wie möglich. Es wird empfohlen, Default-Definitionen erstellen, mit dem DEFAULT-Schlüsselwort von der ALTER TABLE oder CREATE TABLE Anweisungen stattdessen.

Topic link icon Transact-SQL-Syntaxkonventionen

  
sp_bindefault [ @defname = ] 'default' ,   
    [ @objname = ] 'object_name'   
    [ , [ @futureonly = ] 'futureonly_flag' ]   

[ @defname= ] 'default'
Der Name des Standards, der von CREATE DEFAULT erstellt wird. standardmäßige ist nvarchar(776), hat keinen Standardwert.

[ @objname= ] 'object_name'
Der Name der Tabelle und der Spalte, oder der Aliasdatentyp, an den der Standardwert gebunden werden soll. Object_name ist nvarchar(776) hat keinen Standardwert. Object_name kann nicht definiert werden, mit der varchar(max), nvarchar(max), varbinary(max), Xml, oder benutzerdefinierte CLR-Typen.

Wenn Object_name ist ein einteiliger Name, wird er als Aliasdatentyp aufgelöst. Ist er ein - oder dreiteiliger Name, wird es zuerst als eine Tabelle und Spalte aufgelöst; und wenn die Auflösung fehlschlägt, wird Sie als einen Aliasdatentyp aufgelöst. Vorhandene Spalten des aliasdatentyps erben standardmäßig Standard, es sei denn, Sie direkt auf die Spalte ein Standardwert gebunden wurde. Ein Standard kann nicht gebunden werden, um eine Text, Ntext, Image, varchar(max), nvarchar(max), varbinary(max), Xml, Zeitstempel, oder CLR UDT-Spalte, eine Spalte mit der IDENTITY-Eigenschaft, eine berechnete Spalte oder eine Spalte, die bereits eine DEFAULT-Einschränkung aufweist.

System_CAPS_ICON_note.jpg Hinweis


Object_name können Klammern enthalten [] als begrenzungsbezeichnern angegeben wird. Weitere Informationen finden Sie unter Datenbankbezeichner.

[ @futureonly= ] "Futureonly_flag"
Wird nur beim Binden eines Standardwerts an einen Aliasdatentyp verwendet. Futureonly_flag ist varchar(15) hat den Standardwert NULL. Wenn dieser Parameter festgelegt ist, um Futureonly, vorhandene Spalten dieses Datentyps den neuen Standard können nicht geerbt werden. Dieser Parameter wird nie beim Binden eines Standards an eine Spalte verwendet. Wenn Futureonly_flag NULL ist, wird der neue Standard an alle Spalten des aliasdatentyps, die aktuell keinen Standard aufweisen oder die den vorhandenen Standard des aliasdatentyps, gebunden.

0 (Erfolg) oder 1 (Fehler)

Sie können Sp_bindefault an einen neuen Standardwert an eine Spalte binden, obwohl empfohlen wird, verwenden die DEFAULT-Einschränkung oder einen Aliasdatentyp, ohne die Bindung eines vorhandenen Standards. Der alte Standard wird überschrieben. Sie können einen Standard nicht an einen SQL Server-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, die entweder eine standardmäßige direkt an sie gebunden oder Futureonly_flag angegeben ist, als Futureonly. Neue Spalten des Aliasdatentyps erben immer den Standard.

Wenn Sie einen Standard an eine Spalte binden, zugehörige Informationen hinzugefügt die sys.columns -Katalogsicht angezeigt. Wenn Sie einen Standard an einen Aliasdatentyp binden, zugehörige Informationen hinzugefügt die sys.types -Katalogsicht angezeigt.

Benutzer muss Besitzer der Tabelle oder ein Mitglied der Sysadmin festen Serverrolle oder die Db_owner und Db_ddladmin festen Datenbankrollen.

A. Bindet eines Standardwerts 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, es sei denn, Futureonly angegeben Futureonly_flag Wert, oder, wenn die Spalte einen direkt gebundenen Standard besitzt. 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. Da Futureonly angegeben wird, keine vorhandenen Spalten des Typs ssn betroffen sind.

USE master;  
GO  
EXEC sp_bindefault 'def_ssn', 'ssn', 'futureonly';  

D. Verwendung von begrenzungsbezeichnern

Das folgende Beispiel zeigt die Verwendung von begrenzungsbezeichnern, [t.1], im Object_name.

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.  

Datenbankmodul gespeicherte Systemprozeduren ( Transact-SQL )
ERSTELLEN Sie STANDARDMÄßIGE ( Transact-SQL )
LÖSCHEN Sie die STANDARDMÄßIGE ( Transact-SQL )
Sp_unbindefault ( Transact-SQL )
Gespeicherte Prozeduren ( Transact-SQL )

Community-Beiträge

HINZUFÜGEN
Anzeigen: