Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Skapar ett objekt som kallas standard. När det är bundet till en kolumn eller en aliasdatatyp anger ett standardvärde som ska infogas i kolumnen som objektet är bundet till (eller i alla kolumner, om det är av en aliasdatatyp), när inget värde uttryckligen anges under en infogning.
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. Använd i stället standarddefinitioner som skapats med nyckelordet DEFAULTALTER TABLE eller CREATE TABLE.
Transact-SQL syntaxkonventioner
Syntax
CREATE DEFAULT [ schema_name . ] default_name
AS constant_expression [ ; ]
Arguments
schema_name
Namnet på det schema som standardvärdet tillhör.
default_name
Standardnamnet. Standardnamn måste överensstämma med reglerna för identifierare. Det är valfritt att ange standardnamnet för ägaren.
constant_expression
Ett uttryck som endast innehåller konstanta värden (det kan inte innehålla namnen på några kolumner eller andra databasobjekt). Du kan använda alla konstanta, inbyggda funktioner eller matematiska uttryck, förutom de som innehåller aliasdatatyper. Användardefinierade funktioner kan inte användas. Omsluta tecken- och datumkonstanter inom enkla citattecken ('); monetära konstanter, heltal och flyttalskonstanter kräver inte citattecken. Binära data måste föregås av 0x, och monetära data måste föregås av ett dollartecken ($). Standardvärdet måste vara kompatibelt med kolumndatatypen.
Anmärkningar
Du kan bara skapa ett standardnamn i den aktuella databasen. I en databas måste standardnamn vara unika enligt schema. När du skapar ett standardvärde använder sp_bindefault du för att binda det till en kolumn eller till en aliasdatatyp.
Om standardvärdet inte är kompatibelt med kolumnen som den är bunden till genererar SQL Server ett felmeddelande när du försöker infoga standardvärdet. N/A kan till exempel inte användas som standard för en numerisk kolumn.
Om standardvärdet är för långt för kolumnen som det är bundet till trunkeras värdet.
CREATE DEFAULT -instruktioner kan inte kombineras med andra Transact-SQL-instruktioner i en enda batch.
Ett standardvärde måste tas bort innan du skapar ett nytt med samma namn. Och standardvärdet måste vara obundet genom att sp_unbindefault köras innan det tas bort.
Om en kolumn har både en standard och en regel som är associerad med den får standardvärdet inte bryta mot regeln. Ett standardvärde som står i konflikt med en regel infogas aldrig och SQL Server genererar ett felmeddelande varje gång den försöker infoga standardvärdet.
När det är bundet till en kolumn infogas ett standardvärde när:
- Ett värde infogas inte uttryckligen.
- Antingen används nyckelorden
DEFAULT VALUESellerDEFAULTmedINSERTför att infoga standardvärden.
Om du anger NOT NULL när du skapar en kolumn och du inte skapar en standard för den genereras ett felmeddelande när en användare inte kan göra en post i kolumnen. I följande tabell visas relationen mellan förekomsten av ett standardvärde och definitionen av en kolumn som NULL eller NOT NULL. Posterna i tabellen visar resultatet.
| Kolumndefinition | Ingen post, inget standardvärde | Ingen post, standard | Ange NULL, inget standardvärde |
Ange NULL, standard |
|---|---|---|---|---|
NULL |
NULL |
Förinställning | NULL |
NULL |
NOT NULL |
Error | Förinställning | Error | Error |
Om du vill byta namn på ett standardvärde använder du sp_rename För en rapport som standard använder du sp_help.
Permissions
Om du vill använda CREATE DEFAULTmåste en användare minst ha CREATE DEFAULT behörighet i den aktuella databasen och ALTER behörighet för schemat där standardvärdet skapas.
Examples
A. Skapa ett standardtecken
I följande exempel skapas ett standardtecken med namnet unknown.
USE AdventureWorks2022;
GO
CREATE DEFAULT phonedflt
AS 'unknown';
B. Binda ett standardvärde
I följande exempel binds standardvärdet som skapats i exempel A. Standardvärdet börjar gälla endast om ingen post har angetts för Phone kolumnen i Contact tabellen.
Anmärkning
Att utelämna en post skiljer sig från att uttryckligen ange NULL i en INSERT -instruktion.
Eftersom det inte finns något standardnamn phonedflt misslyckas följande Transact-SQL-instruktion. Det här exemplet är endast för illustration.
USE AdventureWorks2022;
GO
EXECUTE sp_bindefault 'phonedflt', 'Person.PersonPhone.PhoneNumber';
Relaterat innehåll
- ALTER TABLE (Transact-SQL)
- SKAPA REGEL (Transact-SQL)
- SKAPA TABELL (Transact-SQL)
- SLÄPP STANDARD (Transact-SQL)
- SLÄPPREGEL (Transact-SQL)
- Uttryck (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)