Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Magazijn in Microsoft Fabric
SQL-database in Microsoft Fabric Preview
Hiermee geeft u de eigenschappen op van een kolom die aan een tabel wordt toegevoegd met behulp van ALTER TABLE.
Transact-SQL syntaxis-conventies
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
De naam van de kolom die moet worden gewijzigd, toegevoegd of verwijderd. column_name kan bestaan uit 1 tot en met 128 tekens. Voor nieuwe kolommen, gemaakt met een tijdstempelgegevenstype , kunt u column_name weglaten. Als er geen column_name is opgegeven voor een kolom met het tijdstempelgegevenstype , wordt de tijdstempel van de naam gebruikt.
[ type_schema_name. ] type_name
Het gegevenstype voor de kolom die wordt toegevoegd en het schema waartoe deze behoort.
type_name kan het volgende zijn:
Een microsoft SQL Server-systeemgegevenstype.
Een aliasgegevenstype op basis van een sql Server-systeemgegevenstype. Aliasgegevenstypen moeten worden gemaakt met behulp van
CREATE TYPEvoordat ze kunnen worden gebruikt in een tabeldefinitie.Een door de gebruiker gedefinieerd Microsoft .NET Framework-type en het schema waartoe het behoort. Een door de gebruiker gedefinieerd .NET Framework-type moet worden gemaakt door gebruik
CREATE TYPEte maken voordat het kan worden gebruikt in een tabeldefinitie.
Als type_schema_name niet is opgegeven, verwijst de Microsoft Database Engine naar type_name in de volgende volgorde:
Het gegevenstype van het SQL Server-systeem.
Het standaardschema van de huidige gebruiker in de huidige database.
Het dbo-schema in de huidige database.
precision
De precisie voor het opgegeven gegevenstype. Zie Precisie, Schaal en Lengtevoor meer informatie over geldige precisiewaarden.
scale
De schaal voor het opgegeven gegevenstype. Zie Precisie, Schaal en Lengtevoor meer informatie over geldige schaalwaarden.
max
Is alleen van toepassing op de gegevenstypen varchar, nvarchar en varbinary . Deze (max) gegevenstypen worden gebruikt voor het opslaan van 2^31 bytes aan teken- en binaire gegevens en 2^30 bytes aan Unicode-gegevens.
CONTENT
Hiermee geeft u op dat elk exemplaar van het xml-gegevenstype in column_name meerdere elementen op het hoogste niveau kan bevatten.
CONTENT is alleen van toepassing op het xml-gegevenstype en kan alleen worden opgegeven als xml_schema_collection ook is opgegeven. Als dit niet is opgegeven, CONTENT is dit het standaardgedrag.
DOCUMENT
Hiermee geeft u op dat elk exemplaar van het XML-gegevenstype in column_name slechts één element op het hoogste niveau kan bevatten.
DOCUMENT is alleen van toepassing op het xml-gegevenstype en kan alleen worden opgegeven als xml_schema_collection ook is opgegeven.
xml_schema_collection
van toepassing op: SQL Server 2008 (10.0.x) en latere versies.
Is alleen van toepassing op het xml- gegevenstype voor het koppelen van een XML-schemaverzameling aan het type. Voordat een xml-gegevenstypekolom wordt toegevoegd aan een schema, moet het schema eerst in de database worden gemaakt met behulp van CREATE XML SCHEMA COLLECTION.
FILESTREAM
Hiermee geeft u desgewenst het filestream-opslagkenmerk op voor de kolom met een type_namevarbinary(max).
Wanneer FILESTREAM is opgegeven voor een kolom, moet de tabel ook een kolom hebben van het gegevenstype uniqueidentifier dat het kenmerk ROWGUIDCOL heeft. Deze kolom mag geen null-waarden toestaan en moet een beperking VOOR UNIEKE of PRIMAIRE SLEUTEL met één kolom hebben. De GUID waarde voor de kolom wordt door de toepassing opgegeven wanneer gegevens worden ingevoegd of door een STANDAARDbeperking.
De kolom ROWGUIDCOL kan niet worden verwijderd en de gerelateerde beperkingen kunnen niet worden gewijzigd terwijl er een FILESTREAM-kolom is gedefinieerd voor de tabel. De kolom ROWGUIDCOL kan alleen worden verwijderd nadat de laatste FILESTREAM-kolom is verwijderd.
Wanneer het filestream-opslagkenmerk is opgegeven voor een kolom, worden alle waarden voor die kolom opgeslagen in een FILESTREAM-gegevenscontainer op het bestandssysteem.
Zie FILESTREAM voor een voorbeeld waarin wordt getoond hoe u kolomdefinitie gebruikt.
COLLATE collation_name
Hiermee geeft u de sortering van de kolom. Als dit niet is opgegeven, wordt aan de kolom de standaardsortering van de database toegewezen. De sorteringsnaam kan een Windows-sorteringsnaam of een SQL-sorteringsnaam zijn. Zie Windows-sorteringsnaam en SQL Server-sorteringsnaamvoor een lijst en meer informatie.
De COLLATE component kan worden gebruikt om de sorteringen alleen op te geven van kolommen van de gegevenstypen char, varchar, nchar en nvarchar .
Zie COLLATE voor meer informatie over de COLLATE component.
NULL | NIET NULL
Bepaalt of NULL waarden zijn toegestaan in de kolom.
NULL is niet strikt een beperking, maar kan worden opgegeven net als NOT NULL.
[ CONSTRAINT constraint_name ]
Hiermee geeft u het begin van een DEFAULT waardedefinitie. Om compatibiliteit met eerdere versies van SQL Server te behouden, kan een beperkingsnaam worden toegewezen aan een DEFAULT.
constraint_name moet de regels voor id's volgen, behalve dat de naam niet kan beginnen met een nummerteken (#). Als constraint_name niet is opgegeven, wordt er een door het systeem gegenereerde naam toegewezen aan de DEFAULT definitie.
DEFAULT
Is een trefwoord dat de standaardwaarde voor de kolom aangeeft.
DEFAULT definities kunnen worden gebruikt om waarden op te geven voor een nieuwe kolom in de bestaande rijen met gegevens.
DEFAULT definities kunnen niet worden toegepast op tijdstempelkolommen of kolommen met een IDENTITY eigenschap. Als een standaardwaarde is opgegeven voor een door de gebruiker gedefinieerde kolom, moet het type een impliciete conversie van constant_expression naar het door de gebruiker gedefinieerde type ondersteunen.
constant_expression
Is een letterlijke waarde, een NULLof een systeemfunctie die wordt gebruikt als de standaardkolomwaarde. Als deze wordt gebruikt met een kolom die is gedefinieerd als een door de gebruiker gedefinieerd .NET Framework-type, moet de implementatie van het type een impliciete conversie van de constant_expression naar het door de gebruiker gedefinieerde type ondersteunen.
WITH VALUES
Wanneer u een kolom en een DEFAULT beperking toevoegt, stelt u, als de kolom NULLS toestaat, WITH VALUES de waarde van de nieuwe kolom in op de waarde die is DEFAULT constant_expression opgegeven voor bestaande rijen.
Als de kolom die wordt toegevoegd, NULLS niet toestaat, wordt de waarde van de kolom altijd ingesteld op de waarde die is opgegeven in DEFAULT constant expression.
Vanaf SQL Server 2012 (11.x) kan dit een metagegevensbewerking zijn met het toevoegen van niet-null-kolommen-as-an-online-bewerking.
Als dit wordt gebruikt wanneer de gerelateerde kolom niet ook wordt toegevoegd, heeft deze geen effect.
Hiermee geeft u op dat de opgegeven DEFAULT constant_expression waarde wordt opgeslagen in een nieuwe kolom die wordt toegevoegd aan bestaande rijen. Als de toegevoegde kolom null-waarden toestaat en WITH VALUES is opgegeven, wordt de standaardwaarde opgeslagen in de nieuwe kolom die wordt toegevoegd aan bestaande rijen. Als WITH VALUES niet is opgegeven voor kolommen die null-waarden toestaan, wordt de waarde NULL opgeslagen in de nieuwe kolom, in bestaande rijen. Als de nieuwe kolom null-waarden niet toestaat, wordt de standaardwaarde opgeslagen in nieuwe rijen, ongeacht of WITH VALUES is opgegeven.
IDENTITY
Hiermee geeft u op dat de nieuwe kolom een identiteitskolom is. De SQL Server Database Engine biedt een unieke, incrementele waarde voor de kolom. Wanneer u id-kolommen toevoegt aan bestaande tabellen, worden de identiteitsnummers toegevoegd aan de bestaande rijen van de tabel met de seed- en incrementele waarden. De volgorde waarin de rijen worden bijgewerkt, wordt niet gegarandeerd. Identiteitsnummers worden ook gegenereerd voor nieuwe rijen die worden toegevoegd.
Identiteitskolommen worden vaak gebruikt met PRIMARY KEY beperkingen om te fungeren als de unieke rij-id voor de tabel. De IDENTITY eigenschap kan worden toegewezen aan een kleineint, kleineint, int-, bigint-, decimale(p,0)- of numerieke kolom (p,0). Er kan slechts één identiteitskolom per tabel worden gemaakt. Het DEFAULT trefwoord en de afhankelijke standaardwaarden kunnen niet worden gebruikt met een identiteitskolom. Zowel het zaad als de verhoging moeten worden opgegeven, of geen van beide. Als geen van beide is opgegeven, is de standaardwaarde (1,1).
Note
U kunt een bestaande tabelkolom niet wijzigen om de IDENTITY eigenschap toe te voegen.
Het toevoegen van een identiteitskolom aan een gepubliceerde tabel wordt niet ondersteund omdat deze kan resulteren in niet-afhankelijkheden wanneer de kolom wordt gerepliceerd naar de abonnee. De waarden in de identiteitskolom van Publisher zijn afhankelijk van de volgorde waarin de rijen voor de betrokken tabel fysiek worden opgeslagen. De rijen kunnen anders worden opgeslagen bij de abonnee; Daarom kan de waarde voor de identiteitskolom verschillen voor dezelfde rijen.
Als u de IDENTITY eigenschap van een kolom wilt uitschakelen door waarden expliciet in te voegen, gebruikt u SET IDENTITY_INSERT.
zaad De waarde die wordt gebruikt voor de eerste rij die in de tabel is geladen.
vermeerdering De incrementele waarde die is toegevoegd aan de identiteitswaarde van de vorige rij die wordt geladen.
NIET VOOR REPLICATIE
van toepassing op: SQL Server 2008 (10.0.x) en latere versies.
Kan worden opgegeven voor de IDENTITY eigenschap. Als deze component is opgegeven voor de IDENTITY eigenschap, worden waarden niet verhoogd in identiteitskolommen wanneer replicatieagenten invoegbewerkingen uitvoeren.
ROWGUIDCOL
van toepassing op: SQL Server 2008 (10.0.x) en latere versies.
Hiermee geeft u op dat de kolom een rij globaal unieke id-kolom is.
ROWGUIDCOL kan alleen worden toegewezen aan een uniqueidentifier-kolom en er kan slechts één uniekeidentifierkolom per tabel worden aangewezen als de ROWGUIDCOL kolom.
ROWGUIDCOL kan niet worden toegewezen aan kolommen met door de gebruiker gedefinieerde gegevenstypen.
ROWGUIDCOL dwingt geen uniekheid af van de waarden die zijn opgeslagen in de kolom.
ROWGUIDCOL Genereert ook niet automatisch waarden voor nieuwe rijen die in de tabel worden ingevoegd. Als u unieke waarden voor elke kolom wilt genereren, gebruikt u de NEWID() functie voor INSERT instructies of geeft u de NEWID() functie op als de standaardwaarde voor de kolom. Zie NEWID (Transact-SQL) en INSERT (Transact-SQL)voor meer informatie.
SPARSE
Geeft aan dat de kolom een sparse-kolom is. De opslag van sparsekolommen is geoptimaliseerd voor null-waarden. Sparse-kolommen kunnen niet worden aangeduid als NOT NULL. Zie Sparse-kolommen gebruikenvoor aanvullende beperkingen en meer informatie over sparsekolommen.
<column_constraint>
Zie column_constraint (Transact-SQL) voor de definities van de kolombeperkingsargumenten.
ENCRYPTED WITH
Hiermee geeft u het versleutelen van kolommen met behulp van de functie Always Encrypted.
ENCRYPTED WITH wordt niet ondersteund in SQL Database in Microsoft Fabric Preview.
COLUMN_ENCRYPTION_KEY = key_name
Hiermee geeft u de kolomversleutelingssleutel op. Zie CREATE COLUMN ENCRYPTION KEY (Transact-SQL) voor meer informatie.
ENCRYPTION_TYPE = { DETERMINISTIC | RANDOMIZED }
Deterministische versleuteling maakt gebruik van een methode die altijd dezelfde versleutelde waarde genereert voor een bepaalde tekst zonder opmaak. Met behulp van deterministische versleuteling kunt u zoeken met behulp van gelijkheidsvergelijking, groepering en samenvoegen van tabellen met behulp van gelijkheidsdeelnames op basis van versleutelde waarden, maar kan niet-gemachtigde gebruikers ook toestaan informatie over versleutelde waarden te raden door patronen in de versleutelde kolom te onderzoeken. Het samenvoegen van twee tabellen op kolommen die deterministisch zijn versleuteld, is alleen mogelijk als beide kolommen zijn versleuteld met dezelfde kolomversleutelingssleutel. Deterministische versleuteling moet een kolomsortering met een binaire2-sorteervolgorde voor tekenkolommen gebruiken.
willekeurige versleuteling een methode gebruikt waarmee gegevens op een minder voorspelbare manier worden versleuteld. Gerandomiseerde versleuteling is veiliger, maar voorkomt berekeningen en indexering op versleutelde kolommen, tenzij uw SQL Server-exemplaar Always Encrypted ondersteunt met beveiligde enclaves.
Als u Always Encrypted gebruikt (zonder beveiligde enclaves), gebruikt u deterministische versleuteling voor kolommen die moeten worden doorzocht met parameters of groeperingsparameters, bijvoorbeeld een overheids-id-nummer. Gebruik gerandomiseerde versleuteling, voor gegevens zoals een creditcardnummer dat niet is gegroepeerd met andere records of wordt gebruikt om tabellen samen te voegen, en die niet wordt gezocht omdat u andere kolommen (zoals een transactienummer) gebruikt om de rij te vinden die de versleutelde interessekolom bevat.
Als u Always Encrypted gebruikt met beveiligde enclaves, is willekeurige versleuteling een aanbevolen versleutelingstype.
Kolommen moeten van een in aanmerking komend gegevenstype zijn.
ALGORITHM
van toepassing op: SQL Server 2016 (13.x) en hoger, SQL Database.
Moet 'AEAD_AES_256_CBC_HMAC_SHA_256' zijn.
Zie Always Encrypted (Database Engine) voor meer informatie, waaronder functiebeperkingen.
GEMASKEERD TOEVOEGEN MET (FUNCTION = ' mask_function ')
van toepassing op: SQL Server 2016 (13.x) en hoger, SQL Database.
Hiermee geeft u een dynamisch gegevensmasker. mask_function is de naam van de maskeringsfunctie met de juiste parameters. De volgende functies zijn beschikbaar:
default()email()partial()random()
Zie Dynamische gegevensmaskeringvoor functieparameters.
Remarks
Als een kolom wordt toegevoegd met een gegevenstype uniqueidentifier , kan deze worden gedefinieerd met een standaardwaarde die de NEWID() functie gebruikt om de unieke id-waarden in de nieuwe kolom op te geven voor elke bestaande rij in de tabel. Zie NEWID (Transact-SQL)voor meer informatie.
De database-engine dwingt geen volgorde af voor het opgeven DEFAULT, IDENTITYof ROWGUIDCOLkolombeperkingen in een kolomdefinitie.
De ALTER TABLE instructie mislukt als het toevoegen van de kolom ervoor zorgt dat de gegevensrij groter is dan 8.060 bytes.
Examples
Zie ALTER TABLE (Transact-SQL)voor voorbeelden.