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


Oszlopok alapértelmezett értékeinek megadása

Vonatkozik a következőkre: SQL Server 2016 (13.x) û későbbi verziók: Azure SQL Database,Azure SQL Managed Instance,Azure Synapse AnalyticsPlatform System (PDW)SQL database in Microsoft Fabric

Az SQL Server Management Studio (SSMS) használatával megadhat egy alapértelmezett értéket, amely be van írva a táblaoszlopba. Az alapértelmezett beállításokat az Object Explorerrel vagy a Transact-SQL futtatásával állíthatja be.

Ha nem rendel hozzá alapértelmezett értéket az oszlophoz, és a felhasználó üresen hagyja az oszlopot, akkor:

  • Ha a null értékek engedélyezésére vonatkozó beállítást adja meg, a NULL be lesz szúrva az oszlopba.

  • Ha nem adja meg a null értékek engedélyezésének lehetőségét, az oszlop üres marad, de a felhasználó vagy az alkalmazás nem tudja beszúrni a sort, amíg meg nem adnak egy értéket az oszlophoz.

Az adatbázisszintű adatkonzisztenciát különböző feladatokhoz használhatja alapértelmezett kényszerként:

  • Állítsa be az "aktív" vagy az "engedélyezett" oszlop sorértékét 1 értékre a beszúráskor.
  • Egy dátummező sorértékének beállítása az aktuális dátumra.
  • Egy mező sorértékének beállítása determinisztikus rendszerfüggvényre, például DB_NAME().

Limitations

Mielőtt hozzákezdene, vegye figyelembe a következő korlátozásokat és korlátozásokat:

  • Ha az Alapértelmezett érték mezőben lévő bejegyzés egy kötött alapértelmezett értéket vált fel (amely zárójelek nélkül jelenik meg), a rendszer kérni fogja, hogy szüntesse meg az alapértelmezett beállítást, és cserélje le az új alapértelmezett értékre.

  • Szöveges sztring megadásához az értéket egyetlen idézőjelbe (') kell foglalnia. Ne használjon idézőjeleket ("), mert idézőjeles azonosítókhoz vannak fenntartva.

  • Numerikus alapértelmezett érték megadásához írja be a számot idézőjelek nélkül.

  • Objektum/függvény megadásához írja be az objektum/függvény nevét idézőjelek nélkül.

  • Az Azure Synapse Analyticsben alapértelmezés szerint csak állandók használhatók. Egy kifejezés nem használható alapértelmezett korlátozással.

Permissions

A cikkben ismertetett műveletekhez ALTER engedély szükséges a táblában.

Alapértelmezett érték megadása az SQL Server Management Studióval

Az Objektumkezelővel az SSMS-ben megadhat egy táblaoszlop alapértelmezett értékét. Ehhez kövesse az alábbi lépéseket:

  1. Csatlakozzon az SQL Server-példányhoz az SSMS használatával.

  2. Az Object Explorerterületen kattintson a jobb gombbal arra a táblára, amelynek oszlopainál módosítani szeretné a méretezést, és válassza a Tervezéslehetőséget.

  3. Jelölje ki azt az oszlopot, amelyhez alapértelmezett értéket szeretne megadni.

  4. Az Oszlop tulajdonságai lapon kérjük, adja meg az új alapértelmezett értéket az Alapértelmezett érték vagy Kötés mezőben.

    Numerikus alapértelmezett érték megadásához adja meg a számot. Egy objektum vagy függvény esetében adja meg a nevét. Alfanumerikus alapértelmezett értékhez írja be az értéket egyetlen idézőjelben.

  5. A Fájl menüben válassza a Mentés <táblanév>lehetőséget.

Alapértelmezett érték megadása a Transact-SQL használatával

Az oszlopok alapértelmezett értékét többféleképpen is megadhatja a T-SQL használatával. Az alábbi példák mindegyikében megnyithat egy új Transact-SQL lekérdezést ezekkel a lépésekkel.

  1. Az Object Explorer-ben csatlakozzon az adatbázismotor egy példányához.

  2. A Standard sávon válassza Új lekérdezéslehetőséget.

  3. Másolja és illessze be a példát a lekérdezési ablakba, és válassza a Végrehajtáslehetőséget.

Névvel ellátott kényszer használata

Adatbázisprojektek használatakor ajánlott névvel kényszereket létrehozni. Ellenkező esetben az alapértelmezett korlátozás egy rendszer által létrehozott nevet kap, amely minden olyan SQL Server-környezetben eltérő lesz, ahol az adatbázis-objektumok létrejönnek.

CREATE TABLE dbo.doc_exz (
    column_a INT,
    column_b INT CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50
);

ALTER TABLE használata

Elnevezett korlátozást adhat hozzá egy meglévő táblához ALTER TABLE.

CREATE TABLE dbo.doc_exz (
    column_a INT,
    column_b INT
); -- Allows nulls.
GO

INSERT INTO dbo.doc_exz (column_a)
VALUES (7);
GO

ALTER TABLE dbo.doc_exz
ADD CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50 FOR column_b;
GO

CREATE TABLE használata

Létrehozhat egy új táblát alapértelmezett korlátozásokkal a CREATE TABLEsegítségével.

CREATE TABLE dbo.doc_exz (
    column_a INT,
    column_b INT CONSTRAINT DF_Doc_Exz_Column_B DEFAULT 50
);

Létrehozási dátum beállítása

Az alábbi példa a sysdatetimeoffset() rendszerfüggvény használatával tölti ki a dateinserted oszlop sorértékét a sor létrehozásának dátumával.

CREATE TABLE dbo.test (
    id INT identity(1, 1) NOT NULL CONSTRAINT PK_test PRIMARY KEY
    ,date_inserted DATETIMEOFFSET(2) NOT NULL CONSTRAINT DF_test_date_inserted DEFAULT(sysdatetimeoffset())
);

Az alapértelmezett korlátozás nem változik a sor frissítésekor. Ha a sor módosításakor frissíteni szeretne egy értéket, fontolja meg egy eseményindító, egy időbeli tábla, egy számított oszlopvagy egy sorfordítási bináris sztring használatát. Érdemes lehet sorokat is beszúrni a sorok közvetlen beszúrása helyett tárolt eljárások végrehajtásával, ahol a tárolt eljárások üzleti logikát, alapértelmezett értékeket és egyéb adatkonzisztencia-szabályokat kényszeríthetnek ki.

A változó sorok észleléséhez fontolja meg a Változásadat-rögzítést (CDC), a Változáskövetést, az időbeli táblátvagy a Ledger-táblát.