Delen via


STANDAARD MAKEN (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Hiermee maakt u een object met de naam standaard. Als het afhankelijk is van een kolom of een aliasgegevenstype, geeft een standaardwaarde op die moet worden ingevoegd in de kolom waaraan het object is gebonden (of in alle kolommen, indien van een aliasgegevenstype), wanneer er geen waarde expliciet wordt opgegeven tijdens een invoeging.

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. Gebruik in plaats daarvan standaarddefinities die zijn gemaakt met behulp van het DEFAULT trefwoord van ALTER TABLE of CREATE TABLE.

Transact-SQL syntaxis-conventies

Syntaxis

CREATE DEFAULT [ schema_name . ] default_name
AS constant_expression [ ; ]

Arguments

schema_name

De naam van het schema waartoe de standaardwaarde behoort.

default_name

De naam van de standaardwaarde. Standaardnamen moeten voldoen aan de regels voor id's. Het opgeven van de standaardnaam van de eigenaar is optioneel.

constant_expression

Een expressie die alleen constante waarden bevat (de namen van kolommen of andere databaseobjecten kunnen niet worden opgenomen). U kunt elke constante, ingebouwde functie of wiskundige expressie gebruiken, behalve de expressies die aliasgegevenstypen bevatten. Door de gebruiker gedefinieerde functies kunnen niet worden gebruikt. Plaats teken- en datumconstanten tussen enkele aanhalingstekens ('); monetaire, gehele getallen en drijvendekommaconstanten vereisen geen aanhalingstekens. Binaire gegevens moeten worden voorafgegaan door 0x, en monetaire gegevens moeten worden voorafgegaan door een dollarteken ($). De standaardwaarde moet compatibel zijn met het kolomgegevenstype.

Opmerkingen

U kunt alleen een standaardnaam maken in de huidige database. In een database moeten standaardnamen uniek zijn per schema. Wanneer u een standaardwaarde maakt, gebruikt sp_bindefault u deze om deze te binden aan een kolom of aan een aliasgegevenstype.

Als de standaardwaarde niet compatibel is met de kolom waaraan deze is gebonden, genereert SQL Server een foutbericht wanneer u de standaardwaarde probeert in te voegen. N/B kan bijvoorbeeld niet worden gebruikt als een standaardwaarde voor een numerieke kolom.

Als de standaardwaarde te lang is voor de kolom waaraan deze is gebonden, wordt de waarde afgekapt.

CREATE DEFAULT instructies kunnen niet worden gecombineerd met andere Transact-SQL-instructies in één batch.

Een standaardwaarde moet worden verwijderd voordat u een nieuwe naam maakt. En de standaardwaarde moet niet afhankelijk zijn door deze uit te sp_unbindefault voeren voordat deze wordt verwijderd.

Als aan een kolom zowel een standaard als een regel is gekoppeld, mag de standaardwaarde de regel niet schenden. Een standaardwaarde die conflicteert met een regel wordt nooit ingevoegd en SQL Server genereert telkens wanneer wordt geprobeerd de standaardwaarde in te voegen een foutbericht.

Wanneer deze is gebonden aan een kolom, wordt een standaardwaarde ingevoegd wanneer:

  • Een waarde wordt niet expliciet ingevoegd.
  • DEFAULT VALUES De trefwoorden of DEFAULT trefwoorden worden gebruikt INSERT om standaardwaarden in te voegen.

Als u opgeeft NOT NULL wanneer u een kolom maakt en u er geen standaard voor maakt, wordt er een foutbericht gegenereerd wanneer een gebruiker geen vermelding in die kolom kan maken. De volgende tabel illustreert de relatie tussen het bestaan van een standaard en de definitie van een kolom als NULL of NOT NULL. De vermeldingen in de tabel geven het resultaat weer.

Kolomdefinitie Geen vermelding, geen standaardwaarde Geen vermelding, standaard Enter NULL, geen standaardwaarde Enter NULL, standaard
NULL NULL Verstek NULL NULL
NOT NULL Fout Verstek Fout Fout

Als u de naam van een standaardinstelling wilt wijzigen, gebruikt sp_rename u Voor een rapport op een standaardwaarde sp_help.

Permissions

Als u minimaal een gebruiker wilt gebruiken CREATE DEFAULT, moet een gebruiker beschikken over CREATE DEFAULT machtigingen in de huidige database en ALTER machtigingen voor het schema waarin de standaardwaarde wordt gemaakt.

Voorbeelden

Eén. Standaardwaarde voor basistekens maken

In het volgende voorbeeld wordt een tekenstandaard gemaakt met de naam unknown.

USE AdventureWorks2022;
GO

CREATE DEFAULT phonedflt
    AS 'unknown';

B. Een standaardbinding maken

In het volgende voorbeeld wordt de standaardbinding gemaakt in voorbeeld A. De standaardwaarde wordt alleen van kracht als er geen vermelding is opgegeven voor de Phone kolom van de Contact tabel.

Opmerking

Het weglaten van een vermelding verschilt van expliciete vermelding NULL in een INSERT verklaring.

Omdat er geen standaardnaam phonedflt bestaat, mislukt de volgende Transact-SQL instructie. Dit voorbeeld is alleen bedoeld voor illustratie.

USE AdventureWorks2022;
GO

EXECUTE sp_bindefault 'phonedflt', 'Person.PersonPhone.PhoneNumber';