Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-database in Microsoft Fabric
Bindt een standaard aan een kolom of aan een alias-datatype.
Belangrijk
Deze functie wordt verwijderd in een toekomstige versie van SQL Server. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie. We raden aan om standaarddefinities te maken door het DEFAULT-sleutelwoord van de ALTER TABLE- of CREATE TABLE-instructies te gebruiken.
Transact-SQL syntaxis-conventies
Syntaxis
sp_bindefault
[ @defname = ] N'defname'
, [ @objname = ] N'objname'
[ , [ @futureonly = ] 'futureonly' ]
[ ; ]
Arguments
[ @defname = ] N'defname'
De naam van de standaard die door CREATE DEFAULTwordt gemaakt.
@defname is nvarchar(776), zonder standaard.
[ @objname = ] N'objname'
De naam van de tabel en kolom, of het alias-datatype, waaraan de standaard gebonden moet worden. @objname is nvarchar(776), zonder standaard. @objname kan niet worden gedefinieerd met varchar(max), nvarchar(max), varbinary(max), xml of CLR-door de gebruiker gedefinieerde types.
Als @objname een naam uit één deel is, wordt het opgelost als een alias-datatype. Als het een twee- of driedelige naam is, wordt deze eerst opgelost als een tabel en kolom; en als deze resolutie faalt, wordt deze opgelost als een alias-datatype. Standaard erven bestaande kolommen van het alias-datatype @defname, tenzij een standaard direct aan de kolom is gebonden. Een standaard kan niet worden gebonden aan een tekst-, ntext-, afbeelding-, varchar(max)-, nvarchar(max)-, varbinary(max)-, xml-, timestamp- of CLR-door de gebruiker gedefinieerde typekolom, een kolom met de IDENTITY eigenschap, een berekende kolom, of een kolom die al een DEFAULT beperking heeft.
@objname kan haakjes ([ en ]) als gescheiden identificaties bevatten. Zie Database-id's voor meer informatie.
[ @futureonly = ] 'alleen voor de toekomst'
Wordt alleen gebruikt bij het binden van een standaard aan een aliasdatatype.
@futureonly is varchar(15), met een standaard van NULL. Wanneer deze parameter wordt ingesteld op futureonly, kunnen bestaande kolommen van dat datatype de nieuwe standaard niet erven. Deze parameter wordt nooit gebruikt bij het binden van een standaard aan een kolom. Als @futureonly is NULL, is de nieuwe standaard gebonden aan kolommen van het aliasdatatype die momenteel geen standaard hebben of die de bestaande standaard van het aliasdatatype gebruiken.
Codewaarden retourneren
0 (geslaagd) of 1 (mislukt).
Opmerkingen
Je kunt gebruiken sp_bindefault om een nieuwe standaard aan een kolom te koppelen, hoewel het gebruik van de DEFAULT beperking de voorkeur heeft, of aan een alias-datatype zonder een bestaande standaard te ontbinden. De oude standaard is overruled. Je kunt geen standaard koppelen aan een SQL Server-systeemdatatype of een CLR-door de gebruiker gedefinieerd type. Als de standaard niet compatibel is met de kolom waaraan je hem hebt gebonden, geeft de SQL Server Database Engine een foutmelding wanneer hij probeert de standaardwaarde in te voegen, niet wanneer je hem bindt.
Bestaande kolommen van het aliasdatatype erven de nieuwe standaard, tenzij ofwel een default direct aan hen is gebonden of futureonly is gespecificeerd als futureonly. Nieuwe kolommen van het alias-datatype erven altijd de standaard.
Wanneer je een standaard aan een kolom koppelt, wordt gerelateerde informatie toegevoegd aan de sys.columns catalogusweergave. Wanneer je een standaard koppelt aan een alias-datatype, wordt gerelateerde informatie toegevoegd aan de sys.types catalogusweergave.
Permissions
De gebruiker moet eigenaar zijn van de tabel, of lid zijn van de sysadmin vaste serverrol, of van de db_owner en db_ddladmin vaste databaserollen.
Voorbeelden
Eén. Bind een standaard aan een kolom
Een standaardnaam today wordt gedefinieerd in de huidige database door gebruik te maken van CREATE DEFAULT. Het volgende voorbeeld bindt de standaard aan de HireDate kolom van de Employee tabel. Telkens wanneer een rij aan de Employee tabel wordt toegevoegd en de gegevens voor de HireDate kolom niet worden aangeleverd, krijgt de kolom de waarde van de standaard today.
USE master;
GO
EXECUTE sp_bindefault 'today', 'HumanResources.Employee.HireDate';
B. Bind een standaard aan een alias-datatype
Er bestaat al een standaard benoemde def_ssn naam en een aliasgegevenstype ssn . Het volgende voorbeeld bindt de standaard def_ssn aan ssn. Wanneer een tabel wordt aangemaakt, wordt de standaard geërfd door alle kolommen die het alias-datatype ssnhebben toegewezen . Bestaande kolommen van het type ssn erven ook de standaard def_ssn, tenzij futureonly is gespecificeerd voor de @futureonly waarde, of de kolom een standaardgrens direct heeft. Standaardstandaarden die aan kolommen zijn gebonden hebben altijd voorrang boven standaardwaarden die aan datatypes zijn gebonden.
USE master;
GO
EXECUTE sp_bindefault 'def_ssn', 'ssn';
C.
futureonly De optie gebruiken
Het volgende voorbeeld bindt de standaard def_ssn aan het alias-datatype ssn. Omdat futureonly is gespecificeerd, worden geen bestaande kolommen van het type ssn beïnvloed.
USE master;
GO
EXECUTE sp_bindefault 'def_ssn', 'ssn', 'futureonly';
D. Gebruik gescheiden identificaties
Het volgende voorbeeld toont het gebruik van gescheiden identificaties, [t.1], in @objname.
USE master;
GO
CREATE TABLE [t.1] (c1 INT);
-- Notice the period as part of the table name.
EXECUTE 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.