Megosztás a következőn keresztül:


ALAPÉRTELMEZÉS (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Létrehoz egy alapértelmezettnek nevezett objektumot. Ha oszlophoz vagy alias adattípushoz van kötve, az alapértelmezett érték azt az értéket adja meg, amelybe az objektumot köti (vagy az összes oszlopba, ha alias adattípusról van szó), ha a beszúrás során nem ad meg explicit értéket.

Fontos

Ez a funkció az SQL Server egy későbbi verziójában lesz eltávolítva. Ne használja ezt a funkciót az új fejlesztési munkában, és tervezze meg a funkciót jelenleg használó alkalmazások módosítását. Ehelyett használja a kulcsszóval DEFAULTALTER TABLElétrehozott alapértelmezett definíciókat.CREATE TABLE

Transact-SQL szintaxis konvenciók

Szemantika

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

Arguments

schema_name

Annak a sémának a neve, amelyhez az alapértelmezett tartozik.

default_name

Az alapértelmezett név. Az alapértelmezett neveknek meg kell felelniük az azonosítók szabályainak. Az alapértelmezett tulajdonosnév megadása nem kötelező.

constant_expression

Olyan kifejezés , amely csak állandó értékeket tartalmaz (nem tartalmazhat oszlopokat vagy más adatbázis-objektumokat). Bármilyen állandó, beépített függvényt vagy matematikai kifejezést használhat, kivéve az alias adattípusokat. Felhasználó által definiált függvények nem használhatók. A karakter- és dátumállandókat egyetlen idézőjelbe ('); a monetáris, az egész szám és a lebegőpontos állandók nem igényelnek idézőjeleket. A bináris adatokat meg kell előznie 0x, a pénzügyi adatokat pedig dollárjelnek ($) kell megelőznie. Az alapértelmezett értéknek kompatibilisnek kell lennie az oszlop adattípusával.

Megjegyzések

Csak az aktuális adatbázisban hozhat létre alapértelmezett nevet. Az adatbázisban az alapértelmezett neveknek sémánként egyedinek kell lenniük. Amikor létrehoz egy alapértelmezett értéket, azzal sp_bindefault egy oszlophoz vagy alias adattípushoz köti.

Ha az alapértelmezett érték nem kompatibilis azzal az oszlopmal, amelyhez hozzá van kötve, az SQL Server hibaüzenetet küld az alapértelmezett érték beszúrásakor. Az N/A például nem használható alapértelmezettként numerikus oszlopokhoz.

Ha az alapértelmezett érték túl hosszú ahhoz az oszlophoz, amelyhez hozzá van kötve, az érték csonkolt lesz.

CREATE DEFAULT az utasítások nem kombinálhatók más Transact-SQL utasításokkal egyetlen kötegben.

Az új név létrehozása előtt el kell elvetni az alapértelmezett értéket. Az alapértelmezett értéknek kötetlennek kell lennie ahhoz, hogy végrehajtsa az elvetése sp_unbindefault előtt.

Ha egy oszlophoz tartozik alapértelmezett és egy szabály is, az alapértelmezett érték nem sértheti meg a szabályt. A rendszer soha nem szúr be olyan alapértelmezett értéket, amely ütközik egy szabálysal, és az SQL Server minden alkalommal hibaüzenetet hoz létre, amikor megkísérli beszúrni az alapértelmezettet.

Ha oszlophoz van kötve, a rendszer az alapértelmezett értéket a következő esetekben szúrja be:

  • Egy érték nincs explicit módon beszúrva.
  • A rendszer vagy a DEFAULT VALUESDEFAULT kulcsszavakat INSERT használja az alapértelmezett értékek beszúrásához.

Ha egy oszlop létrehozásakor megadja NOT NULL , és nem hoz létre alapértelmezett értéket, hibaüzenet jelenik meg, ha egy felhasználó nem tud bejegyzést létrehozni az oszlopban. Az alábbi táblázat az alapértelmezett érték és az oszlop NULLNOT NULLdefiníciója közötti kapcsolatot szemlélteti. A táblázat bejegyzései az eredményt mutatják.

Oszlopdefiníció Nincs bejegyzés, nincs alapértelmezett Nincs bejegyzés, alapértelmezett Enter NULL, nincs alapértelmezett Adja meg NULLaz alapértelmezett értéket
NULL NULL Alapértelmezett NULL NULL
NOT NULL Error Alapértelmezett Error Error

Az alapértelmezett név átnevezéséhez használja sp_rename a Jelentés alapértelmezettként parancsot sp_help.

Permissions

A használathoz CREATE DEFAULTlegalább a felhasználónak rendelkeznie kell engedéllyel az aktuális adatbázisban, és CREATE DEFAULT engedéllyel kell rendelkeznie ALTER azon a sémán, amelyben az alapértelmezett létrehozása folyamatban van.

Példák

A. Alapszintű karakter létrehozása alapértelmezettként

Az alábbi példa létrehoz egy alapértelmezett, úgynevezett karaktert unknown.

USE AdventureWorks2022;
GO

CREATE DEFAULT phonedflt
    AS 'unknown';

B. Alapértelmezett kötés

Az alábbi példa az A példában létrehozott alapértelmezett kötést köti össze. Az alapértelmezett érték csak akkor lép érvénybe, ha nincs megadva bejegyzés a PhoneContact tábla oszlopához.

Megjegyzés:

Bármely bejegyzés kihagyása eltér az utasításban NULL kifejezett INSERT állítástól.

Mivel az alapértelmezett név phonedflt nem létezik, a következő Transact-SQL utasítás meghiúsul. Ez a példa csak illusztráció.

USE AdventureWorks2022;
GO

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