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 hozzáadott új oszlopdefiníció részét képező ELSŐDLEGES KULCS, IDEGEN KULCS, EGYEDI vagy CHECK kényszer tulajdonságait adja meg.
Transact-SQL szintaxis konvenciók
Syntax
Syntax for SQL Server, Azure SQL Database, Azure SQL Managed Instance, SQL database in Microsoft Fabric
[ CONSTRAINT constraint_name ]
{
[ NULL | NOT NULL ]
{ PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
[ WITH FILLFACTOR = fillfactor ]
[ WITH ( index_option [, ...n ] ) ]
[ ON { partition_scheme_name (partition_column_name)
| filegroup | "default" } ]
| [ FOREIGN KEY ]
REFERENCES [ schema_name . ] referenced_table_name
[ ( ref_column ) ]
[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
[ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
[ NOT FOR REPLICATION ]
| CHECK [ NOT FOR REPLICATION ] ( logical_expression )
}
A Microsoft Fabric Warehouse szintaxisa
[ CONSTRAINT constraint_name ]
{
{ PRIMARY KEY | UNIQUE }
NONCLUSTERED
(column [ ASC | DESC ] [ ,...n ] )
NOT ENFORCED
| FOREIGN KEY
( column [ ,...n ] )
REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ]
NOT ENFORCED
}
Arguments
CONSTRAINT
Meghatározza az ELSŐDLEGES KULCS, AZ EGYEDI, a KÜLFÖLDI KULCS vagy a CHECK korlátozás definíciójának kezdetét.
constraint_name
A kényszer neve. 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.
NULL | NEM NULL
Megadja, hogy az oszlop elfogad-e NULL értékeket. Az értékeket nem engedélyező NULL oszlopok csak akkor vehetők fel, ha alapértelmezés szerint meg vannak adva. Ha az új oszlop engedélyezi NULL az értékeket, és nincs megadva alapértelmezett érték, az új oszlop a tábla minden sorához tartalmaz NULL . Ha az új oszlop engedélyezi NULL az értékeket, és egy alapértelmezett definíciót ad hozzá az új oszlophoz, a WITH VALUES (ÉRTÉKEKKEL) beállítással az új oszlopban tárolhatja az alapértelmezett értéket a tábla minden meglévő sorához.
Ha az új oszlop nem engedélyezi NULL az értékeket, az új oszlophoz hozzá kell adni egy ALAPÉRTELMEZETT definíciót. Az új oszlop automatikusan betöltődik az alapértelmezett értékkel az egyes meglévő sorok új oszlopaiban.
Ha egy oszlop hozzáadása fizikai módosításokat igényel egy tábla adatsoraiban, például alapértelmezett értékeket ad hozzá minden sorhoz, a zárolások a táblában maradnak az ALTER TABLE futtatásakor. Ez hatással van a tábla tartalmának módosítására, amíg a zárolás érvényben van. Ezzel szemben egy olyan oszlop hozzáadása, amely lehetővé teszi NULL az értékeket, és nem ad meg alapértelmezett értéket, csak metaadat-művelet, és nem jár zárolással.
Ha az adatbázis- és munkamenet-beállításokat használja CREATE TABLE vagy ALTER TABLE, az oszlopdefinícióban használt adattípus érvénytelenségét befolyásolja és esetleg felülbírálja. Javasoljuk, hogy mindig explicit módon definiálja a nem megfelelő oszlopokat felhasználó által definiált adattípusként NULL , vagy NOT NULL ha felhasználó által definiált adattípust használ, az oszlopnak az adattípus alapértelmezett nullbilitását kell használnia. További információ: CREATE TABLE.
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 oszlopok entitásintegritását biztosító korlátozás 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.
Az ntext, szöveg, varchar(max), nvarchar(max), varbinary(max), xml vagy kép adattípusú oszlopok nem adhatók meg indexoszlopként.
A Microsoft Fabric Warehouse-ban a NONCLUSTERED nincs hatással.
FILLFACTOR =fillfactor
Megadja, hogy az adatbázismotor milyen teljes mértékben tegye az indexadatok tárolására használt indexlapokat. A felhasználó által megadott kitöltési tényező értéke 1 és 100 között lehet. Ha nincs megadva érték, az alapértelmezett érték 0.
Important
Az ELSŐDLEGES KULCS vagy AZ EGYEDI korlátozásokra vonatkozó egyetlen indexbeállításként történő dokumentálás WITH FILLFACTOR megmarad a visszamenőleges kompatibilitás érdekében, de a jövőbeni kiadásokban nem lesz ilyen módon dokumentálva. Az ALTER TABLE index_option záradékában más indexbeállítások is megadhatók.
ON { partition_scheme_name(partition_column_name) | filegroup | default }
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.
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, ahogyan ON default vagy ON [default]. Ha az alapértelmezett beállítás meg van adva, a QUOTED_IDENTIFIER beállításnak be kell kapcsolnia az aktuális munkamenetet. Ez az alapértelmezett beállítás. További információ: SET QUOTED_IDENTIFIER (Transact-SQL).
NEM ÉRVÉNYESÍTVE
A Microsoft Fabric Warehouse-ban az elsődleges kulcsra, az egyedi kulcsra és a külső kulcsra vonatkozó korlátozásokHOZ NINCS SZÜKSÉG KÉNYSZERÍTVE. A korlátozások integritását az alkalmazásnak fenn kell tartania.
KÜLFÖLDI KULCSHIVATKOZÁSOK
Ez egy olyan korlátozás, amely hivatkozási integritást biztosít az oszlopban lévő adatokhoz. A KÜLFÖLDI KULCS megkötések megkövetelik, hogy az oszlop minden értéke szerepel a hivatkozott tábla megadott oszlopában.
schema_name
Annak a sémának a neve, amelyhez a FOREIGN KEY kényszer által hivatkozott tábla tartozik.
referenced_table_name
A KÜLSŐ KULCS kényszer hivatkozik a táblára.
ref_column
Egy zárójelben lévő oszlop, amelyet az új FOREIGN KEY kényszer hivatkozik.
ON DELETE { NO ACTION | CASCADE | NULL ÉRTÉK BEÁLLÍTÁSA | ALAPÉRTELMEZETT BEÁLLÍTÁS }
Megadja, hogy a módosított tábla sorai milyen műveletet hajtanak végre, 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 SQL Server 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.
NULL BEÁLLÍTÁS
Az idegen kulcsot alkotó összes érték a szülőtábla megfelelő sorának törlésekor lesz beállítva NULL . A kényszer végrehajtásához az idegen kulcs oszlopainak null értékűnek kell lenniük.
ÁLLÍTSD BE AZ ALAPÉRTELMEZETT BEÁLLÍTÁST
Az idegen kulcsot alkotó összes érték az alapértelmezett értékre van állítva a szülőtábla megfelelő sorának törlésekor. A kényszer végrehajtásához az összes idegenkulcs-oszlopnak alapértelmezett definíciókkal kell rendelkeznie. Ha egy oszlop null értékű, és nincs megadva explicit alapértelmezett érték, NULL akkor az oszlop implicit alapértelmezett értéke lesz.
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.
ON DELETE CASCADE nem határozható meg, ha már INSTEAD OF létezik eseményindító ON DELETE a módosított táblában.
Az AdventureWorks2025 adatbázisban például a ProductVendor tábla hivatkozási kapcsolatban áll a Vendor táblával.
ProductVendor.
VendorID idegen kulcs a Vendor.
VendorID elsődleges kulcs.
Ha egy DELETE utasítást hajt végre a Vendor tábla egy sorában, és a .ProductVendor- hez VendorIDegy ON DELETE CASCADE műveletet ad meg, az adatbázismotor egy vagy több függő sort keres a ProductVendor táblában. Ha van ilyen, a tábla függő sorait ProductVendor a rendszer a táblában Vendor hivatkozott soron kívül törli.
Ezzel szemben, ha NINCS MŰVELET megadva, az adatbázismotor hibát jelez, és visszaállítja a törlési műveletet a Vendor sorban, ha a táblában ProductVendor legalább egy olyan sor található, amely hivatkozik rá.
FRISSÍTÉSEN { NINCS MŰVELET | CASCADE | NULL ÉRTÉK BEÁLLÍTÁSA | ALAPÉRTELMEZETT BEÁLLÍTÁS }
Megadja, hogy a tábla sorai milyen műveletet hajtanak végre, amikor a sorok hivatkozási kapcsolatban állnak, és a hivatkozott sor frissül a szülőtáblában. Az alapértelmezett művelet a NINCS MŰVELET.
NINCS AKCIÓ
Az adatbázismotor hibát jelez, és a szülőtábla sorának frissítési művelete vissza lesz állítva.
CASCADE
A megfelelő sorok frissülnek a hivatkozó táblában, amikor az adott sor frissül a szülőtáblában.
NULL BEÁLLÍTÁS
Az idegen kulcsot alkotó összes érték a szülőtábla megfelelő sorának frissítésekor lesz beállítva NULL . A kényszer végrehajtásához az idegen kulcs oszlopainak null értékűnek kell lenniük.
ÁLLÍTSD BE AZ ALAPÉRTELMEZETT BEÁLLÍTÁST
Az idegen kulcsot alkotó összes érték az alapértelmezett értékre van állítva a szülőtábla megfelelő sorának frissítésekor. A kényszer végrehajtásához az összes idegenkulcs-oszlopnak alapértelmezett definíciókkal kell rendelkeznie. Ha egy oszlop null értékű, és nincs megadva explicit alapértelmezett érték, NULL akkor az oszlop implicit alapértelmezett értéke lesz.
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.
A CASCADE, a SET NULL vagy a SET DEFAULT frissítése nem határozható meg, ha a módosítandó táblában már létezik az ON UPDATE eseményindító helyett.
Az AdventureWorks2025 adatbázisban például a ProductVendor tábla hivatkozási kapcsolatban áll a Vendor táblával.
ProductVendor.
VendorID idegen kulcs a Vendor.
VendorID elsődleges kulcs.
Ha egy UPDATE utasítást hajt végre a Vendor tábla egy sorában, és ON UPDATE CASCADEProductVendora .VendorID, az adatbázismotor egy vagy több függő sort keres a ProductVendor táblában. Ha van ilyen, a tábla függő sorát a tábla hivatkozási ProductVendor során Vendor kívül a rendszer frissíti.
Ezzel szemben, ha NINCS MŰVELET megadva, az adatbázismotor hibát jelez, és visszaállítja a frissítési műveletet a Vendor sorban, ha a táblában ProductVendor legalább egy olyan sor található, amely 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.
logical_expression
A CHECK kényszerben használt logikai kifejezés IGAZ vagy HAMIS értéket ad vissza.
logical_expression CHECK korlátozásokkal nem hivatkozhat egy másik táblára, de hivatkozhat ugyanahhoz a táblához tartozó többi oszlopra. A kifejezés nem hivatkozhat alias-adattípusra.
Remarks
A KÜLFÖLDI KULCS vagy a CHECK megkötések hozzáadásakor a rendszer minden meglévő adatot ellenőriz a kényszer megsértése esetén, kivéve, ha a WITH NOCHECK beállítás meg van adva. Ha bármilyen szabálysértés történik, az ALTER TABLE sikertelen lesz, és hibát ad vissza. Ha új ELSŐDLEGES KULCS vagy EGYEDI korlátozás van hozzáadva egy meglévő oszlophoz, az oszlopban vagy oszlopokban lévő adatoknak egyedinek kell lenniük. Ha ismétlődő értékek találhatók, az ALTER TABLE sikertelen lesz. A WITH NOCHECK beállításnak nincs hatása az ELSŐDLEGES KULCS vagy AZ EGYEDI megkötések hozzáadásakor.
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. Az idegenkulcs-korlátozások nem hoznak létre automatikusan indexet. Az idegenkulcs-oszlopokat azonban gyakran használják a lekérdezések illesztési feltételeiben, ha az egyik tábla idegenkulcs-korlátozását a másik tábla elsődleges vagy egyedi kulcsoszlopával vagy oszlopaival egyezik meg. Az idegenkulcs-oszlopok indexe lehetővé teszi, hogy az adatbázismotor gyorsan megtalálja a kapcsolódó adatokat az idegen kulcstáblában.
Examples
Példák: ALTER TABLE (Transact-SQL).