sp_bindefault (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Binder en standard till en kolumn eller till en aliasdatatyp.

Viktigt!

Den här funktionen tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen. Vi rekommenderar att du skapar standarddefinitioner genom att använda nyckelordet DEFAULT i satserna ALTER TABLE eller CREATE TABLE istället.

Transact-SQL syntaxkonventioner

Syntax

sp_bindefault
    [ @defname = ] N'defname'
    , [ @objname = ] N'objname'
    [ , [ @futureonly = ] 'futureonly' ]
[ ; ]

Arguments

[ @defname = ] N'defname'

Namnet på standarden som skapas av CREATE DEFAULT. @defname är nvarchar(776), utan standard.

[ @objname = ] N'objname'

Namnet på tabellen och kolumnen, eller aliasdatatypen, som standarden är att bindas till. @objname är nvarchar(776), utan standard. @objname kan inte definieras med varchar(max), nvarchar(max), varbinary(max), xml eller CLR-användardefinierade typer.

Om @objname är ett endelat namn, löses det som en aliasdatatyp. Om det är ett två- eller tredelat namn löses det först som en tabell och kolumn; och om denna lösning misslyckas, löses den som en aliasdatatyp. Som standard ärver befintliga kolumner av alias-datatypen @defname, om inte en standard är direkt bunden till kolumnen. En standard kan inte bindas till en text-, ntext-, bild-, varchar(max)-, nvarchar-(max)-, varbinary-(max)-, xml-, tidsstämpel- eller CLR-användardefinierad typkolumn, en kolumn med IDENTITY egenskapen, en beräknad kolumn eller en kolumn som redan har en DEFAULT begränsning.

@objname kan innehålla parenteser ([ och ]) som avgränsade identifierare. Mer information finns i Databasidentifierare.

[ @futureonly = ] 'endast framtid'

Används endast när man binder en standard till en aliasdatatyp. @futureonly är varchar(15), med standardvärdet .NULL När denna parameter sätts till futureonly, kan befintliga kolumner av den datatypen inte ärva den nya standarden. Denna parameter används aldrig när man binder en standard till en kolumn. Om @futureonly är NULL, är den nya standarden bunden till alla kolumner av aliasdatatypen som för närvarande saknar standard eller som använder den befintliga standarden för aliasdatatypen.

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Anmärkningar

Du kan använda sp_bindefault det för att binda en ny standard till en kolumn, även om det är att föredra att använda begränsningen DEFAULT , eller till en alias-datatyp utan att avbinda en befintlig standard. Den gamla standarden är överskriven. Du kan inte binda en standard till en SQL Server-systemdatatyp eller en CLR-användardefinierad typ. Om standardvärdet inte är kompatibelt med kolumnen du har bundit det till, ger SQL Server Database Engine ett felmeddelande när den försöker infoga standardvärdet, inte när du binder det.

Befintliga kolumner av aliasdatatypen ärver den nya standarden, om inte antingen en default är direkt bunden till dem eller futureonly anges som futureonly. Nya kolumner av alias-datatypen ärver alltid standarden.

När du binder en standard till en kolumn läggs relaterad information till sys.columns i katalogvyn. När du binder en standard till en alias-datatyp läggs relaterad information till i sys.types katalogvyn.

Permissions

Användaren måste äga tabellen, eller vara medlem i sysadmin-rollen för fast server, eller db_owner och db_ddladmin fasta databasrollerna.

Examples

A. Bind en standard till en kolumn

En standardnamngiven today definieras i den aktuella databasen genom att använda CREATE DEFAULT. Följande exempel binder standarden till kolumnen HireDate i tabellen Employee . När en rad läggs till i Employee tabellen och data för kolumnen HireDate inte tillhandahålls, får kolumnen värdet av standardvärdet today.

USE master;
GO

EXECUTE sp_bindefault 'today', 'HumanResources.Employee.HireDate';

B. Bind en standard till en alias-datatyp

En standardnamngiven def_ssn och en alias-datatyp namngiven ssn finns redan. Följande exempel binder standarden def_ssn till ssn. När en tabell skapas ärvs standarden av alla kolumner som tilldelas aliasdatatypen ssn. Befintliga kolumner av typen ssn ärver också standardvärdet def_ssn, om futureonly inte anges för värdet @futureonly , eller kolumnen har en standardgräns direkt till sig. Standardinställningar bundna till kolumner har alltid företräde framför standardvärden som är bundna till datatyper.

USE master;
GO

EXECUTE sp_bindefault 'def_ssn', 'ssn';

C. Använd alternativet futureonly

Följande exempel binder standarden def_ssn till aliasdatatypen ssn. Eftersom futureonly är specificerat påverkas inga befintliga kolumner av typ ssn .

USE master;
GO

EXECUTE sp_bindefault 'def_ssn', 'ssn', 'futureonly';

D. Använd avgränsade identifierare

Följande exempel visar användning av avgränsade identifierare, [t.1], i @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.