Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Az ALTER TABLE használatával egy táblához hozzáadott számított oszlop tulajdonságait adja meg.
Transact-SQL szintaxis konvenciók
Syntax
column_name AS computed_column_expression
[ PERSISTED [ NOT NULL ] ]
[
[ CONSTRAINT constraint_name ]
{ PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
[ WITH FILLFACTOR = fillfactor ]
[ WITH ( <index_option> [, ...n ] ) ]
[ ON { partition_scheme_name ( partition_column_name ) | filegroup
| "default" } ]
| [ FOREIGN KEY ]
REFERENCES ref_table [ ( ref_column ) ]
[ ON DELETE { NO ACTION | CASCADE } ]
[ ON UPDATE { NO ACTION } ]
[ NOT FOR REPLICATION ]
| CHECK [ NOT FOR REPLICATION ] ( logical_expression )
]
Arguments
column_name
A módosítani, hozzáadni vagy elvetni kívánt oszlop neve. column_name 1–128 karakter lehet. Új oszlopok esetén column_name kihagyhatók az időbélyeg-adattípussal létrehozott oszlopok. Ha nincs megadva column_name az időbélyeg adattípus oszlopához, a név időbélyege lesz használva.
computed_column_expression
Egy számított oszlop értékét meghatározó kifejezés. A számított oszlop olyan virtuális oszlop, amely nem fizikailag van tárolva a táblában, hanem egy olyan kifejezésből van kiszámítva, amely ugyanazon tábla más oszlopait használja. Egy kifejezésnek értéket kell eredményeznie. Egy számított oszlop például a következő definícióval rendelkezhet: cost AS price * qty. Egy másik példa bitenkénti operátorokkal: is_finalised AS is_checked | is_approved. A kifejezés lehet egy nem megfelelő oszlopnév, állandó, függvény, változó, és ezek bármely kombinációja, amelyet egy vagy több operátor kapcsol össze. A kifejezés nem lehet keresési feltétel, al lekérdezés vagy alias adattípus.
A számított oszlopok használhatók listák, WHERE záradékok, ORDER BY záradékok vagy bármely más olyan helyen, ahol reguláris kifejezések használhatók, de az alábbi kivételekkel:
A számított oszlop nem használható ALAPÉRTELMEZETT vagy IDEGEN KULCS kényszerdefinícióként vagy NOT NULL kényszerdefinícióval. Ha azonban a számított oszlop értékét determinisztikus kifejezés határozza meg, és az eredmény adattípusa engedélyezett az indexoszlopokban, a számított oszlop használható kulcsoszlopként egy indexben, vagy bármely ELSŐDLEGES KULCS vagy EGYEDI korlátozás részeként.
Ha például a táblázat a és b egész szám oszlopokat tartalmaz, akkor az a + b számított oszlop indexelhető, de a + DATEPART(dd, GETDATE()) számított oszlop nem indexelhető, mert az érték a későbbi hívásokban változhat.
A számított oszlop nem lehet az INSERT vagy AZ UPDATE utasítás célja.
Note
Mivel a táblázat minden sora különböző értékekkel rendelkezhet a számított oszlopban érintett oszlopokhoz, előfordulhat, hogy a számított oszlop nem azonos eredményt ad az egyes sorokhoz.
PERSISTED
Azt adja meg, hogy az adatbázismotor fizikailag tárolja a számított értékeket a táblában, és frissíti az értékeket, amikor a számított oszloptól függő egyéb oszlopok is frissülnek. A számított oszlopok ÁLLANDÓként való megjelölése lehetővé teszi az index létrehozását egy determinisztikus, de nem pontos számított oszlopon. További információ: Számított oszlopok indexei. A particionált táblák particionálási oszlopaként használt összes számított oszlopot explicit módon MEG KELL jelölni. computed_column_expression determinisztikusnak kell lennie a PERSISTED megadásakor.
NULL | NEM NULL
Megadja, hogy a null értékek engedélyezettek-e az oszlopban. A NULL nem szigorúan kényszer, de megadható úgy, mint a NOT NULL. A NOT NULL érték csak akkor adható meg a számított oszlopokhoz, ha a PERSISTED is meg van adva.
CONSTRAINT
Egy ELSŐDLEGES KULCS vagy EGYEDI kényszer definíciójának kezdetét adja meg.
constraint_name
Ez az új korlátozás. A kényszerneveknek az azonosítókra vonatkozó szabályokat kell követnie, azzal a kivétellel, hogy a név nem kezdődhet számjellel (#). Ha constraint_name nincs megadva, a rendszer által létrehozott név lesz hozzárendelve a kényszerhez.
ELSŐDLEGES KULCS
Egy adott oszlop vagy oszlop entitásintegritását egyedi index használatával kényszerítő kényszer. Minden táblához csak egy ELSŐDLEGES KULCS kényszer hozható létre.
UNIQUE
Egy adott oszlop vagy oszlop entitásintegritást biztosító korlátozása egy egyedi index használatával.
FÜRTÖZÖTT | NEMCLUSTERED
Azt adja meg, hogy a rendszer fürtözött vagy nemclustered indexet hoz létre az ELSŐDLEGES KULCS vagy AZ EGYEDI korlátozáshoz. AZ ELSŐDLEGES KULCS korlátozásai alapértelmezés szerint FÜRTÖZÖTT. AZ EGYEDI korlátozások alapértelmezés szerint NEMCLUSTERED értékre esnek.
Ha egy táblán már létezik fürtözött korlátozás vagy index, akkor a CLUSTERED nem adható meg. Ha egy táblán már létezik fürtözött kényszer vagy index, az ELSŐDLEGES KULCS megkötések alapértelmezés szerint NEMCLUSTERED értékre esnek.
FILLFACTOR =fillfactor
Megadja, hogy az SQL Server adatbázismotorja milyen teljes mértékben tegye az indexadatok tárolására használt indexlapokat. A felhasználó által megadott fillfactor értékek 1 és 100 között lehetnek. Ha nincs megadva érték, az alapértelmezett érték 0.
Important
A FILLFACTOR = fillfactor az elsődleges kulcsra vagy egyedi korlátozásokra vonatkozó egyetlen indexbeállítás, a visszamenőleges kompatibilitás érdekében megmarad, de a jövőbeni kiadásokban nem lesz ilyen módon dokumentálva. Az ALTER TABLE index_option (Transact-SQL) záradékában más indexbeállítások is megadhatók.
KÜLFÖLDI KULCSHIVATKOZÁSOK
Olyan korlátozás, amely hivatkozási integritást biztosít az oszlopban vagy oszlopokban lévő adatokhoz. A KÜLFÖLDI KULCS megkötései megkövetelik, hogy az oszlop minden értéke szerepel a hivatkozott tábla megfelelő hivatkozott oszlopában vagy oszlopaiban. A KÜLFÖLDI KULCS megkötések csak azokra az oszlopokra hivatkozhatnak, amelyek ELSŐDLEGES KULCS vagy EGYEDI kényszerek a hivatkozott táblában vagy a hivatkozott tábla EGYEDI INDEXében hivatkozott oszlopokban. A számított oszlopokban lévő idegen kulcsokat IS MEG KELL őrizni.
ref_table
A KÜLSŐ KULCS kényszer által hivatkozott tábla neve.
(ref_column )
A FOREIGN KEY kényszer által hivatkozott tábla oszlopa.
TÖRLÉSKOR { NINCS AKCIÓ | KASKÁD }
Megadja, hogy mi történik a táblázat soraiban, ha ezek a sorok hivatkozási kapcsolatban állnak, és a hivatkozott sor törlődik a szülőtáblából. Az alapértelmezett művelet a NINCS MŰVELET.
NINCS AKCIÓ
Az adatbázismotor hibát jelez, és a rendszer visszaállítja a szülőtábla sorának törlési műveletét.
CASCADE
A rendszer törli a megfelelő sorokat a hivatkozó táblából, ha az adott sor törlődik a szülőtáblából.
Az adatbázisban például a AdventureWorks2025 ProductVendor tábla hivatkozási kapcsolatban áll a Vendor táblával. A ProductVendor.BusinessEntityID idegen kulcs a Vendor.BusinessEntityID elsődleges kulcsra hivatkozik.
Ha egy DELETE utasítást hajt végre a Szállító tábla egy sorában, és a ProductVendor.BusinessEntityID esetében a RENDSZER a DELETE CASCADE műveletet adja meg, az adatbázismotor egy vagy több függő sort keres a ProductVendor táblában. Ha létezik ilyen, a ProductVendor tábla függő sorai törlődnek a Szállító táblában hivatkozott soron kívül.
Ezzel szemben, ha NINCS MŰVELET megadva, az adatbázismotor hibát jelez, és visszaállítja a törlési műveletet a Szállító sorban, ha a ProductVendor táblában legalább egy sor hivatkozik rá.
Ne adja meg a CASCADE értéket, ha a tábla logikai rekordokat használó egyesítési kiadványban szerepel. További információ a logikai rekordokról: Kapcsolódó sorok módosításainak csoportosítása logikai rekordokkal.
FRISSÍTÉSKOR { NINCS MŰVELET }
Megadja, hogy milyen művelet történik a tábla azon soraiban, amelyek akkor jönnek létre, amikor ezek a sorok hivatkozási kapcsolatban állnak, és a hivatkozott sor frissül a szülőtáblában. Ha NINCS MŰVELET megadva, az adatbázismotor hibát jelez, és visszaállítja a frissítési műveletet a Szállító sorban, ha a ProductVendor tábla legalább egy sora hivatkozik rá.
REPLIKÁCIÓHOZ NEM
Az: SQL Server 2008 (10.0.x) és újabb verziókra vonatkozik.
A FOREIGN KEY és a CHECK kényszerekhez megadható. Ha ez a záradék egy korlátozáshoz van megadva, a korlátozás nem lesz kényszerítve, amikor a replikációs ügynökök beszúrási, frissítési vagy törlési műveleteket hajtanak végre.
CHECK
Olyan kényszer, amely az oszlopba vagy oszlopokba beírható lehetséges értékek korlátozásával kényszeríti ki a tartomány integritását. A számított oszlopokRA vonatkozó CHECK-korlátozásokat IS MEGŐRZÖTTként kell megjelölni.
logical_expression
Igaz vagy HAMIS értéket visszaadó logikai kifejezés. A kifejezés nem tartalmazhat alias-adattípusra mutató hivatkozást.
ON { partition_scheme_name(partition_column_name) | filegroup| "alapértelmezett"}
Az: SQL Server 2008 (10.0.x) és újabb verziókra vonatkozik.
A korlátozáshoz létrehozott index tárolási helyét adja meg. Ha partition_scheme_name van megadva, az index particionálva lesz, és a partíciók a partition_scheme_name által megadott fájlcsoportokhoz vannak leképezve. Ha a fájlcsoport meg van adva, az index a nevesített fájlcsoportban jön létre. Ha az "alapértelmezett" érték van megadva, vagy ha egyáltalán nincs bekapcsolva, az index ugyanabban a fájlcsoportban jön létre, mint a tábla. Ha az ON érték akkor van megadva, ha egy ELSŐDLEGES KULCS vagy EGYEDI korlátozáshoz fürtözött indexet ad hozzá, a rendszer a fürtözött index létrehozásakor a teljes táblát a megadott fájlcsoportba helyezi át.
Note
Ebben a kontextusban az alapértelmezett érték nem kulcsszó. Ez az alapértelmezett fájlcsoport azonosítója, és el kell tagolást végezni, mint az ON "default" vagy a ON [default] beállításban. Ha az "alapértelmezett" beállítás van megadva, a QUOTED_IDENTIFIER beállításnak be kell kapcsolnia az aktuális munkamenethez. Ez az alapértelmezett beállítás. További információ: SET QUOTED_IDENTIFIER (Transact-SQL).
Remarks
Minden ELSŐDLEGES KULCS és EGYEDI kényszer létrehoz egy indexet. Az EGYEDI és AZ ELSŐDLEGES KULCS korlátozásainak száma nem okozhatja, hogy a táblában lévő indexek száma meghaladja a 999 nemclustered indexet és 1 fürtözött indexet.
SET QUOTED_IDENTIFIER be kell kapcsolnia, amikor számított oszlopokon vagy indexelt nézeteken hoz létre vagy módosít indexeket. További információ: SET QUOTED_IDENTIFIER (Transact-SQL).
A Fabric SQL-adatbázisban a számított oszlopok hozhatók létre, de a rendszer kihagyja őket a Tükrözésből a Fabric OneLake-be.