Dela via


ÄNDRA TABELL column_definition (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceLager i Microsoft FabricSQL-databas i Förhandsversion av Microsoft Fabric

Anger egenskaperna för en kolumn som läggs till i en tabell med hjälp av ALTER TABLE.

Transact-SQL syntaxkonventioner

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

Namnet på kolumnen som ska ändras, läggas till eller tas bort. column_name kan bestå av 1 till 128 tecken. För nya kolumner som skapas med en tidsstämpeldatatyp kan column_name utelämnas. Om ingen column_name har angetts för en tidsstämpeldatatypskolumn används tidsstämpeln för namn.

[ type_schema_name. ] type_name

Datatypen för kolumnen som läggs till och det schema som den tillhör.

type_name kan vara:

  • En Microsoft SQL Server-systemdatatyp.

  • En aliasdatatyp baserad på en SQL Server-systemdatatyp. Aliasdatatyper måste skapas med hjälp CREATE TYPE av innan de kan användas i en tabelldefinition.

  • En användardefinierad typ av Microsoft .NET Framework och det schema som det tillhör. En användardefinierad .NET Framework-typ måste skapas med hjälp CREATE TYPE av innan den kan användas i en tabelldefinition.

Om type_schema_name inte anges refererar Microsoft Database Engine till type_name i följande ordning:

  • SQL Server-systemdatatypen.

  • Standardschemat för den aktuella användaren i den aktuella databasen.

  • dbo-schemat i den aktuella databasen.

precision
Precisionen för den angivna datatypen. Mer information om giltiga precisionsvärden finns i Precision, Skala och Längd.

scale
Skalan för den angivna datatypen. Mer information om giltiga skalningsvärden finns i Precision, Skala och Längd.

max
Gäller endast datatyperna varchar, nvarchar och varbinary . Dessa (max) datatyper används för att lagra 2^31 byte tecken och binära data och 2^30 byte Unicode-data.

CONTENT
Anger att varje instans av XML-datatypen i column_name kan bestå av flera element på den översta nivån. CONTENT gäller endast xml-datatypen och kan endast anges om xml_schema_collection också anges. Om detta inte anges CONTENT är standardbeteendet.

DOCUMENT
Anger att varje instans av XML-datatypen i column_name endast kan bestå av ett element på den översta nivån. DOCUMENT gäller endast xml-datatypen och kan endast anges om xml_schema_collection också anges.

xml_schema_collection
gäller för: SQL Server 2008 (10.0.x) och senare versioner.

Gäller endast för XML- datatyp för att associera en XML-schemasamling med typen . Innan en xml-datatypkolumn läggs till i ett schema måste schemat först skapas i databasen med hjälp av CREATE XML SCHEMA COLLECTION.

FILESTREAM

Du kan också ange filestream-lagringsattributet för kolumnen som har en type_nameav varbinary(max).

När FILESTREAM anges för en kolumn måste tabellen också ha en kolumn av datatypen uniqueidentifier som har attributet ROWGUIDCOL. Den här kolumnen får inte tillåta null-värden och måste ha villkoret UNIK eller PRIMÄRNYCKEL för en kolumn. Värdet GUID för kolumnen tillhandahålls av programmet när data infogas eller av en STANDARD-begränsning.

Det går inte att ta bort ROWGUIDCOL-kolumnen och de relaterade begränsningarna kan inte ändras när det finns en FILESTREAM-kolumn som definierats för tabellen. Kolumnen ROWGUIDCOL kan bara tas bort när den sista FILESTREAM-kolumnen har tagits bort.

När filestream-lagringsattributet har angetts för en kolumn lagras alla värden för kolumnen i en FILESTREAM-datacontainer i filsystemet.

Ett exempel som visar hur du använder kolumndefinition finns i FILESTREAM.

COLLATE collation_name

Anger sortering av kolumnen. Om inget anges tilldelas kolumnen standardsorteringen för databasen. Sorteringsnamnet kan vara antingen ett Windows-sorteringsnamn eller ett SQL-sorteringsnamn. En lista och mer information finns i Windows-sorteringsnamn och SQL Server-sorteringsnamn.

Satsen COLLATE kan endast användas för att ange sorteringarna för kolumner av datatyperna char, varchar, nchar och nvarchar .

Mer information om satsen finns i COLLATECOLLATE.

NULL | INTE NULL

Avgör om NULL värden tillåts i kolumnen. NULL är inte strikt en begränsning men kan anges precis som NOT NULL.

[ BEGRÄNSNING constraint_name ]

Anger början av en DEFAULT värdedefinition. För att upprätthålla kompatibilitet med tidigare versioner av SQL Server kan ett villkorsnamn tilldelas till en DEFAULT. constraint_name måste följa reglerna för identifierare, förutom att namnet inte kan börja med ett taltecken (#). Om constraint_name inte anges tilldelas DEFAULT definitionen ett systemgenererat namn.

DEFAULT

Är ett nyckelord som anger standardvärdet för kolumnen. DEFAULT definitioner kan användas för att ange värden för en ny kolumn i de befintliga dataraderna. DEFAULT definitioner kan inte tillämpas på tidsstämpelkolumner eller kolumner med en IDENTITY egenskap. Om ett standardvärde anges för en användardefinierad typkolumn måste typen ha stöd för en implicit konvertering från constant_expression till den användardefinierade typen.

constant_expression
Är ett literalvärde, en NULL, eller en systemfunktion som används som standardkolumnvärde. Om den används med en kolumn som definierats som av en användardefinierad .NET Framework-typ måste implementeringen av typen ha stöd för en implicit konvertering från constant_expression till den användardefinierade typen.

WITH VALUES

När du lägger till en kolumn och en DEFAULT begränsning, om kolumnen tillåter NULLS, WITH VALUES anger den nya kolumnens värde till det värde som anges i DEFAULT constant_expression för befintliga rader.

Om kolumnen som läggs till inte tillåter NULLS, för befintliga rader, anges kolumnens värde alltid till det värde som anges i DEFAULT constant expression.

Från och med SQL Server 2012 (11.x) kan detta vara en metadataåtgärd som lägger till-inte-null-columns-as-an-online-operation.

Om detta används när den relaterade kolumnen inte också läggs till har den ingen effekt.

Anger att värdet som anges i DEFAULT constant_expression lagras i en ny kolumn som läggs till i befintliga rader. Om den tillagda kolumnen tillåter null-värden och WITH VALUES anges lagras standardvärdet i den nya kolumnen som läggs till i befintliga rader. Om WITH VALUES inte anges för kolumner som tillåter null-värden lagras värdet NULL i den nya kolumnen i befintliga rader. Om den nya kolumnen inte tillåter null-värden lagras standardvärdet i nya rader oavsett om WITH VALUES har angetts.

IDENTITY

Anger att den nya kolumnen är en identitetskolumn. SQL Server Database Engine innehåller ett unikt, inkrementellt värde för kolumnen. När du lägger till identifierarkolumner i befintliga tabeller läggs identitetsnumren till i de befintliga raderna i tabellen med start- och inkrementsvärdena. Ordningen som raderna uppdateras i garanteras inte. Identitetsnummer genereras också för alla nya rader som läggs till.

Identitetskolumner används ofta med PRIMARY KEY begränsningar för att fungera som unik radidentifierare för tabellen. Egenskapen IDENTITY kan tilldelas till en liten kolumn, smallint, int, bigint, decimal(p,0) eller numerisk (p,0). Endast en identitetskolumn kan skapas per tabell. Nyckelordet DEFAULT och de bundna standardvärdena kan inte användas med en identitetskolumn. Antingen måste både fröet och inkrementet anges eller ingetdera. Om ingen av dem anges är (1,1)standardvärdet .

Note

Du kan inte ändra en befintlig tabellkolumn för att lägga till egenskapen IDENTITY .

Det går inte att lägga till en identitetskolumn i en publicerad tabell eftersom det kan leda till icke-konvergering när kolumnen replikeras till prenumeranten. Värdena i identitetskolumnen i Publisher beror på i vilken ordning raderna för den berörda tabellen lagras fysiskt. Raderna kan lagras på olika sätt i Prenumeranten. Därför kan värdet för identitetskolumnen vara annorlunda för samma rader.

Om du vill inaktivera egenskapen för IDENTITY en kolumn genom att tillåta att värden uttryckligen infogas använder du SET IDENTITY_INSERT.

frö Det värde som används för den första raden som läses in i tabellen.

ökning Det inkrementella värdet som läggs till i identitetsvärdet för den föregående raden som läses in.

INTE FÖR REPLIKERING

gäller för: SQL Server 2008 (10.0.x) och senare versioner.

Kan anges för egenskapen IDENTITY . Om den här satsen anges för IDENTITY egenskapen ökas inte värdena i identitetskolumner när replikeringsagenter utför infogningsåtgärder.

ROWGUIDCOL

gäller för: SQL Server 2008 (10.0.x) och senare versioner.

Anger att kolumnen är en rad globalt unik identifierarkolumn. ROWGUIDCOL kan bara tilldelas till en unikidentifierarkolumn , och endast en unikidentifierarkolumn per tabell kan betecknas som ROWGUIDCOL kolumnen. ROWGUIDCOL kan inte tilldelas till kolumner med användardefinierade datatyper.

ROWGUIDCOL inte framtvingar unikhet för de värden som lagras i kolumnen. ROWGUIDCOL Genererar inte heller automatiskt värden för nya rader som infogas i tabellen. Om du vill generera unika värden för varje kolumn använder NEWID() du antingen funktionen på INSERT -instruktioner eller anger NEWID() funktionen som standard för kolumnen. Mer information finns i NEWID (Transact-SQL) och INSERT (Transact-SQL).

SPARSE

Anger att kolumnen är en gles kolumn. Lagringen av glesa kolumner är optimerad för null-värden. Glesa kolumner kan inte betecknas som NOT NULL. Ytterligare begränsningar och mer information om glesa kolumner finns i Använda glesa kolumner.

<column_constraint>
Definitionerna av kolumnvillkorsargumenten finns i column_constraint (Transact-SQL).

ENCRYPTED WITH

Anger kryptering av kolumner med hjälp av funktionen Always Encrypted. ENCRYPTED WITH stöds inte i SQL-databasen i Förhandsversionen av Microsoft Fabric.

COLUMN_ENCRYPTION_KEY = key_name

Anger kolumnkrypteringsnyckeln. Mer information finns i CREATE COLUMN ENCRYPTION KEY (Transact-SQL).

ENCRYPTION_TYPE = { DETERMINISTIC | RANDOMISERAD }

Deterministisk kryptering använder en metod som alltid genererar samma krypterade värde för ett givet oformaterat textvärde. Med deterministisk kryptering kan du söka med likhetsjämförelse, gruppering och koppling av tabeller med hjälp av likhetskopplingar baserat på krypterade värden, men kan också tillåta obehöriga användare att gissa information om krypterade värden genom att undersöka mönster i den krypterade kolumnen. Det går bara att koppla två tabeller till kolumner som krypterats deterministiskt om båda kolumnerna krypteras med samma kolumnkrypteringsnyckel. Deterministisk kryptering måste använda en kolumnsortering med en binär2-sorteringsordning för teckenkolumner.

Randomiserad kryptering använder en metod som krypterar data på ett mindre förutsägbart sätt. Randomiserad kryptering är säkrare, men förhindrar alla beräkningar och indexering på krypterade kolumner, såvida inte SQL Server-instansen stöder Always Encrypted med säkra enklaver.

Om du använder Always Encrypted (utan säkra enklaver) använder du deterministisk kryptering för kolumner som ska sökas med parametrar eller grupperingsparametrar, till exempel ett myndighets-ID-nummer. Använd randomiserad kryptering för data, till exempel ett kreditkortsnummer som inte är grupperat med andra poster eller används för att koppla tabeller, och som inte söks efter eftersom du använder andra kolumner (till exempel ett transaktionsnummer) för att hitta raden som innehåller den krypterade kolumnen av intresse.

Om du använder Always Encrypted med säkra enklaver är randomiserad kryptering en rekommenderad krypteringstyp.

Kolumner måste ha en kvalificerande datatyp.

ALGORITHM

gäller för: SQL Server 2016 (13.x) och senare SQL Database.

Måste vara "AEAD_AES_256_CBC_HMAC_SHA_256".

Mer information, inklusive funktionsbegränsningar, finns i Always Encrypted (Database Engine).

LÄGG TILL MASKERAD MED (FUNCTION = ' mask_function ')

gäller för: SQL Server 2016 (13.x) och senare SQL Database.

Anger en dynamisk datamask. mask_function är namnet på maskeringsfunktionen med lämpliga parametrar. Följande funktioner är tillgängliga:

  • default()
  • email()
  • partial()
  • random()

För funktionsparametrar, se Dynamisk datamaskering.

Remarks

Om en kolumn läggs till med en unikidentifierardatatyp kan den definieras med en standard som använder NEWID() funktionen för att ange de unika identifierarvärdena i den nya kolumnen för varje befintlig rad i tabellen. Mer information finns i NEWID (Transact-SQL).

Databasmotorn tillämpar inte någon ordning för att DEFAULTange , IDENTITY, ROWGUIDCOLeller kolumnbegränsningar i en kolumndefinition.

Instruktionen ALTER TABLE misslyckas om du lägger till kolumnen gör att dataradens storlek överskrider 8 060 byte.

Examples

Exempel finns i ALTER TABLE (Transact-SQL).