Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Vonatkozik a következőkre:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Raktár a Microsoft Fabric-ben
SQL adatbázis a Microsoft Fabric-ben
Az ALTER TABLE használatával egy táblához hozzáadott oszlop tulajdonságait adja meg.
Transact-SQL szintaxis konvenciók
Syntax
column_name <data_type>
[ FILESTREAM ]
[ COLLATE collation_name ]
[ NULL | NOT NULL ]
[
[ CONSTRAINT constraint_name ] DEFAULT constant_expression [ WITH VALUES ]
| IDENTITY [ ( seed , increment ) ] [ NOT FOR REPLICATION ]
]
[ ROWGUIDCOL ]
[ SPARSE ]
[ ENCRYPTED WITH
( COLUMN_ENCRYPTION_KEY = key_name ,
ENCRYPTION_TYPE = { DETERMINISTIC | RANDOMIZED } ,
ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256'
) ]
[ MASKED WITH ( FUNCTION = ' mask_function ') ]
[ <column_constraint> [ ...n ] ]
<data type> ::=
[ type_schema_name . ] type_name
[ ( precision [ , scale ] | max |
[ { CONTENT | DOCUMENT } ] xml_schema_collection ) ]
<column_constraint> ::=
[ 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 [ 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 )
}
Arguments
column_name
A módosítani, hozzáadni vagy elvetni kívánt oszlop neve. column_name 1–128 karakterből állhat. Az időbélyeg-adattípussal létrehozott új oszlopok esetében column_name kihagyható. Ha nincs megadva column_name az időbélyeg adattípus oszlopához, a név időbélyege lesz használva.
[ type_schema_name. ] type_name
A hozzáadott oszlop adattípusa és a séma, amelyhez tartozik.
type_name lehet:
A Microsoft SQL Server rendszer adattípusa.
Alias adattípus sql serveres rendszer adattípuson alapul. Az alias-adattípusokat a tábladefiníciókban való használatuk előtt létre kell hozni
CREATE TYPE.A Microsoft .NET-keretrendszer felhasználó által definiált típusa és a séma, amelyhez tartozik. A .NET-keretrendszer felhasználó által
CREATE TYPEdefiniált típusát a tábladefinícióban való használat előtt létre kell hozni.
Ha type_schema_name nincs megadva, a Microsoft Adatbázismotor a következő sorrendben hivatkozik type_name :
Az SQL Server rendszer adattípusa.
Az aktuális felhasználó alapértelmezett sémája az aktuális adatbázisban.
A dbo séma az aktuális adatbázisban.
precision
A megadott adattípus pontossága. Az érvényes pontossági értékekről további információt a Pontosság, Skálázás és Hosszcímű témakörben talál.
scale
A megadott adattípus méretezése. Az érvényes skálázási értékekről további információt a Pontosság, Skálázás és Hosszcímű témakörben talál.
max
Csak a varchar, az nvarchar és a varbináris adattípusokra vonatkozik. Ezek az (max) adattípusok 2^31 bájt karakter- és bináris adat, valamint 2^30 bájt Unicode-adat tárolására szolgálnak.
CONTENT
Meghatározza, hogy a column_namexml-adattípusának minden példánya több legfelső szintű elemet tartalmazhat.
CONTENT csak az XML-adattípusra vonatkozik, és csak akkor adható meg , ha xml_schema_collection is meg van adva. Ha ez nincs megadva, CONTENT ez az alapértelmezett viselkedés.
DOCUMENT
Megadja, hogy az xml-adattípus minden példánya csak egy legfelső szintű elemet tartalmazhat column_name.
DOCUMENT csak az XML-adattípusra vonatkozik, és csak akkor adható meg , ha xml_schema_collection is meg van adva.
xml_schema_collection
A: SQL Server 2008 (10.0.x) és újabb verziókra vonatkozik.
Csak a xml adattípusra vonatkozik, ha egy XML-sémagyűjteményt társít a típussal. Mielőtt xml-adattípus-oszlopot ad hozzá egy sémához, először létre kell hoznia a sémát az adatbázisban a CREATE XML SCHEMA COLLECTION használatával.
FILESTREAM
Opcionálisan megadja a FILESTREAM storage attribútumot olyan oszlophoz, amely type_namevarbinary(max).
Ha a FILESTREAM egy oszlophoz van megadva, a táblának rendelkeznie kell a ROWGUIDCOL attribútummal rendelkező uniqueidentifier adattípusú oszlopmal is. Ez az oszlop nem engedélyezheti a null értékeket, és EGYEDI vagy ELSŐDLEGES KULCS egyoszlopos kényszerrel kell rendelkeznie. Az GUID oszlop értékét az alkalmazás adja meg az adatok beszúrásakor, vagy egy ALAPÉRTELMEZETT korlátozással.
A ROWGUIDCOL oszlopot nem lehet elvetni, és a kapcsolódó megkötések nem módosíthatók, amíg a táblához fájlstream oszlop van definiálva. A ROWGUIDCOL oszlop csak az utolsó FILESTREAM oszlop elvetése után hajtható végre.
Ha egy oszlophoz meg van adva a FILESTREAM storage attribútum, a rendszer az oszlop összes értékét egy FILESTREAM-adattárolóban tárolja a fájlrendszeren.
Az oszlopdefiníció használatát bemutató példa: FILESTREAM.
COLLATION_NAME RENDEZÉSE
Az oszlop rendezést adja meg. Ha nincs megadva, az oszlophoz az adatbázis alapértelmezett rendezése lesz hozzárendelve. A rendezés neve lehet Windows-rendezési név vagy SQL-rendezés neve. További információt Windows-rendezési név és SQL Server-rendezési névcímű cikkben talál.
A COLLATE záradék csak a karakter, a varchar, az nchar és az nvarchar adattípusok oszlopainak rendezési módját adhatja meg.
A záradékkal kapcsolatos további információkért lásd: COLLATECOLLATE.
NULL | NEM NULL
Meghatározza, hogy engedélyezettek-e NULL értékek az oszlopban.
NULL nem szigorúan kényszer, de ugyanúgy megadható, mint a NOT NULL.
[ KORLÁTOZÁS CONSTRAINT_NAME ]
Egy értékdefiníció kezdetét DEFAULT adja meg. Az SQL Server korábbi verzióival való kompatibilitás fenntartása érdekében kényszernév rendelhető hozzá egy DEFAULT.
constraint_name 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 DEFAULT definícióhoz.
DEFAULT
Az oszlop alapértelmezett értékét meghatározó kulcsszó.
DEFAULT a definíciók a meglévő adatsorok új oszlopának értékeinek megadására használhatók.
DEFAULT a definíciók nem alkalmazhatók az időbélyegoszlopokra vagy a IDENTITY tulajdonsággal rendelkező oszlopokra. Ha egy felhasználó által definiált típusoszlophoz alapértelmezett érték van megadva, a típusnak támogatnia kell a constant_expression és a felhasználó által megadott típus közötti implicit átalakítást.
constant_expression
Az alapértelmezett oszlopértékként használt literálérték, NULLvagy rendszerfüggvény. Ha a .NET-keretrendszer felhasználó által definiált típusú oszlopával van meghatározva, a típus implementálásának támogatnia kell a constant_expression a felhasználó által definiált típusra történő implicit átalakítást.
ÉRTÉKEKKEL
Ha oszlopot és kényszert DEFAULT ad hozzá, ha az oszlop null értéket engedélyez, WITH VALUES az új oszlop értékét a meglévő sorokban DEFAULT constant_expression megadott értékre állítja.
Ha a hozzáadott oszlop nem engedélyezi a NULL ÉRTÉKET, a meglévő sorok esetében az oszlop értéke mindig a megadott DEFAULT constant expressionértékre lesz állítva.
Az SQL Server 2012-től kezdve (11.x) ez lehet egy metaadat-művelet, amely hozzáad-not-null-oszlopokat-as-an-online-műveletet.
Ha ezt akkor használja a rendszer, ha a kapcsolódó oszlopot nem is adja hozzá, akkor nincs hatása.
Megadja, hogy a megadott DEFAULT constant_expression érték egy új oszlopban legyen tárolva, amely hozzáadódik a meglévő sorokhoz. Ha a hozzáadott oszlop null értékeket engedélyez, és a WITH VALUES meg van adva, az alapértelmezett érték a meglévő sorokhoz hozzáadott új oszlopban lesz tárolva. Ha WITH VALUES nincs megadva a null értéket engedélyező oszlopok esetében, a null érték az új oszlopban, a meglévő sorokban lesz tárolva. Ha az új oszlop nem engedélyezi a null értékeket, az alapértelmezett érték az új sorokban lesz tárolva, függetlenül attól, hogy a WITH VALUES érték van-e megadva.
IDENTITY
Megadja, hogy az új oszlop egy identitásoszlop. Az SQL Server adatbázismotorja egyedi, növekményes értéket biztosít az oszlophoz. Ha azonosító oszlopokat ad hozzá a meglévő táblákhoz, a rendszer hozzáadja az identitásszámokat a tábla meglévő soraihoz a kezdő és növekményes értékekkel. A sorok frissítési sorrendje nem garantált. A hozzáadott új sorokhoz identitásszámokat is létrehoz a rendszer.
Az identitásoszlopokat gyakran használják megkötésekkel PRIMARY KEY a tábla egyedi sorazonosítójaként. A IDENTITY tulajdonság hozzárendelhető egy smallint, smallint, int, bigint, decimális(p,0) vagy numerikus(p;0) oszlophoz. Táblánként csak egy identitásoszlop hozható létre. A DEFAULT kulcsszó és a kötött alapértelmezett értékek nem használhatók identitásoszlopokkal. Vagy a magot és a növekményt is meg kell adni, vagy egyiket sem. Ha egyik sincs megadva, az alapértelmezett érték a következő (1,1).
Note
A tulajdonság hozzáadásához nem módosíthatja a meglévő táblaoszlopokat IDENTITY .
Az identitásoszlop közzététele nem támogatott, mert nem konkonvergenciát eredményezhet, ha az oszlopot replikálja az Előfizetőnek. A Publisher identitásoszlopának értékei attól függenek, hogy az érintett tábla sorai milyen sorrendben vannak fizikailag tárolva. Előfordulhat, hogy a sorok másként lesznek tárolva az előfizetőnél; ezért az identitásoszlop értéke ugyanazon sorok esetében eltérő lehet.
Ha egy oszlop tulajdonságát úgy szeretné letiltani IDENTITY , hogy engedélyezi az értékek explicit beszúrását, használja a SET IDENTITY_INSERT.
mag A táblába betöltött első sorhoz használt érték.
növekmény A betöltött előző sor identitásértékéhez hozzáadott növekményes érték.
REPLIKÁCIÓHOZ NEM
A: SQL Server 2008 (10.0.x) és újabb verziókra vonatkozik.
A tulajdonsághoz megadható IDENTITY . Ha ez a záradék meg van adva a tulajdonsághoz, a IDENTITY replikációs ügynökök beszúrási műveletek végrehajtásakor nem növelik az értékeket az identitásoszlopokban.
ROWGUIDCOL
A: SQL Server 2008 (10.0.x) és újabb verziókra vonatkozik.
Megadja, hogy az oszlop egy sor globálisan egyedi azonosító oszlopa.
ROWGUIDCOL csak egy uniqueidentifier oszlophoz rendelhető hozzá, és táblánként csak egy uniqueidentifier-oszlop jelölhető ki oszlopként ROWGUIDCOL .
ROWGUIDCOL a felhasználó által definiált adattípusok oszlopaihoz nem rendelhető hozzá.
ROWGUIDCOL nem kényszeríti ki az oszlopban tárolt értékek egyediségét.
ROWGUIDCOL Emellett nem hoz létre automatikusan értékeket a táblázatba beszúrt új sorokhoz. Ha minden oszlophoz egyedi értékeket szeretne létrehozni, használja a függvényt az NEWID() utasításokban INSERT , vagy adja meg a NEWID() függvényt alapértelmezettként az oszlophoz. További információ: NEWID (Transact-SQL) és INSERT (Transact-SQL).
SPARSE
Azt jelzi, hogy az oszlop ritka oszlop. A ritka oszlopok tárolása null értékekre van optimalizálva. A ritka oszlopok nem jelölhetők NOT NULL értékként. További korlátozások és további információk a ritka oszlopokról: Ritka oszlopok használata.
<column_constraint>
Az oszlopkorlát argumentumainak definícióiért lásd: column_constraint (Transact-SQL).
TITKOSÍTVA
Az oszlopok titkosítását az Always Encrypted funkcióval adja meg.
ENCRYPTED WITH nem támogatott SQL adatbázisban a Microsoft Fabric-ben.
COLUMN_ENCRYPTION_KEY = key_name
Megadja az oszloptitkosítási kulcsot. További információ: CREATE COLUMN ENCRYPTION KEY (Transact-SQL).
ENCRYPTION_TYPE = { DETERMINISZTIKUS | RANDOMIZED }
A determinisztikus titkosítás olyan metódust használ, amely mindig ugyanazt a titkosított értéket hozza létre egy adott egyszerű szöveges értékhez. A determinisztikus titkosítás lehetővé teszi a keresést egyenlőség-összehasonlítás, csoportosítás és táblák összekapcsolása használatával, titkosított értékeken alapuló egyenlőségi illesztésekkel, de lehetővé teszi, hogy a jogosulatlan felhasználók a titkosított értékekre vonatkozó információkat a titkosított oszlop mintáinak vizsgálatával találják meg. Két táblához való csatlakozás determinisztikusan titkosított oszlopokon csak akkor lehetséges, ha mindkét oszlopot ugyanazzal az oszloptitkosítási kulccsal titkosítja. A determinisztikus titkosításnak oszlopelrendezést kell használnia a karakteroszlopok bináris2 rendezési sorrendjével.
A véletlenszerű titkosítás kevésbé kiszámítható módon titkosítja az adatokat. A véletlenszerű titkosítás biztonságosabb, de megakadályozza a titkosított oszlopokon történő számításokat és indexelést, kivéve, ha az SQL Server-példány biztonságos enklávékkal támogatja az Always Encryptedt.
Ha Always Encryptedt használ (biztonságos enklávék nélkül), használjon determinisztikus titkosítást az oszlopokhoz paraméterekkel vagy csoportosítási paraméterekkel való kereséshez, például kormányzati azonosítószámmal. Használjon véletlenszerű titkosítást olyan adatokhoz, mint például egy hitelkártyaszám, amely nincs más rekordokkal csoportosítva, vagy táblák összekapcsolására szolgál, és amelyeket nem keres, mert más oszlopokat (például tranzakciószámot) használ a titkosított oszlopot tartalmazó sor megkereséséhez.
Ha az Always Encryptedt biztonságos enklávékkal használja, a véletlenszerű titkosítás ajánlott titkosítási típus.
Az oszlopoknak megfelelő adattípusúnak kell lenniük.
ALGORITHM
A következővonatkozik: SQL Server 2016 (13.x) és újabb, SQL Database.
"AEAD_AES_256_CBC_HMAC_SHA_256" kell lennie.
A funkciókorlátozásokkal kapcsolatos további információkért lásd: Always Encrypted (Adatbázismotor).
MASZKOLT HOZZÁADÁSA (FÜGGVÉNY = ' mask_function ')
A következővonatkozik: SQL Server 2016 (13.x) és újabb, SQL Database.
Dinamikus adatmaszkot ad meg. mask_function a maszkoló függvény neve a megfelelő paraméterekkel. A következő függvények érhetők el:
default()email()partial()random()
A függvényparamétereket a dinamikus adatmaszkolás című témakörben talál.
Remarks
Ha egy egyedi adattípussal rendelkező oszlopot adnak hozzá, az alapértelmezett értékekkel határozható meg, amely a NEWID() függvény használatával adja meg az új oszlop egyedi azonosító értékeit a tábla minden meglévő sorához. További információ: NEWID (Transact-SQL).
Az adatbázismotor nem kényszeríti ki az oszlopdefiníciókban az oszlopkorlátok DEFAULTIDENTITYmegadására ROWGUIDCOLvonatkozó sorrendet.
Az ALTER TABLE utasítás meghiúsul, ha az oszlop hozzáadása miatt az adatsor mérete meghaladja a 8060 bájtot.
Examples
Példák: ALTER TABLE (Transact-SQL).