Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy do:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Magazyn w Microsoft Fabric
Baza danych SQL w Microsoft Fabric
Określa właściwości kolumny, które są dodawane do tabeli przy użyciu alter TABLE.
Transact-SQL konwencje składni
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
Nazwa kolumny, która ma zostać zmieniona, dodana lub porzucona. column_name może składać się z od 1 do 128 znaków. W przypadku nowych kolumn utworzonych przy użyciu typu danych sygnatury czasowejmożna pominąć column_name . Jeśli nie określono column_name dla kolumny typu danych sygnatury czasowej , zostanie użyta sygnatura czasowa nazwy.
[ type_schema_name. ] type_name
Typ danych dla dodawanej kolumny oraz schemat, do którego należy.
type_name mogą być następujące:
Typ danych systemowych programu Microsoft SQL Server.
Typ danych aliasu oparty na typie danych systemowych programu SQL Server. Aby można było ich używać w definicji tabeli, należy utworzyć
CREATE TYPEtypy danych aliasów.Typ zdefiniowany przez użytkownika programu Microsoft .NET Framework i schemat, do którego należy. Aby można było go użyć w definicji tabeli, należy utworzyć
CREATE TYPEtyp zdefiniowany przez użytkownika programu .NET Framework.
Jeśli nie określono type_schema_name , aparat bazy danych firmy Microsoft odwołuje się type_name w następującej kolejności:
Typ danych systemowych programu SQL Server.
Domyślny schemat bieżącego użytkownika w bieżącej bazie danych.
Schemat dbo w bieżącej bazie danych.
precision
Precyzja określonego typu danych. Aby uzyskać więcej informacji na temat prawidłowych wartości dokładności, zobacz precyzji, skalowania i długości.
scale
Skala dla określonego typu danych. Aby uzyskać więcej informacji na temat prawidłowych wartości skalowania, zobacz precyzji, skalowania i długości.
max
Dotyczy tylko typów danych varchar, nvarchar i varbinary . Te (max) typy danych są używane do przechowywania 2^31 bajtów znaków i danych binarnych oraz 2^30 bajtów danych Unicode.
CONTENT
Określa, że każde wystąpienie typu danych XML w column_name może składać się z wielu elementów najwyższego poziomu.
CONTENT dotyczy tylko typu danych XML i można go określić tylko wtedy, gdy określono również xml_schema_collection . Jeśli to nie zostanie określone, CONTENT jest zachowaniem domyślnym.
DOCUMENT
Określa, że każde wystąpienie typu danych XML w column_name może składać się tylko z jednego elementu najwyższego poziomu.
DOCUMENT dotyczy tylko typu danych XML i można go określić tylko wtedy, gdy określono również xml_schema_collection .
xml_schema_collection
Dotyczy: SQL Server 2008 (10.0.x) i nowsze wersje.
Dotyczy tylko typu danych XML w celu skojarzenia kolekcji schematów XML z typem. Przed dodaniu kolumny typu danych XML do schematu należy najpierw utworzyć schemat w bazie danych przy użyciu funkcji CREATE XML SCHEMA COLLECTION.
FILESTREAM
Opcjonalnie określa atrybut magazynu FILESTREAM dla kolumny, która ma type_namevarbinary(max).
Gdy parametr FILESTREAM jest określony dla kolumny, tabela musi również mieć kolumnę unikatowego typu danych identyfikatora , który ma atrybut ROWGUIDCOL. Ta kolumna nie może zezwalać na wartości null i musi mieć ograniczenie UNIKATOWE lub KLUCZ PODSTAWOWY z jedną kolumną. Wartość GUID kolumny jest dostarczana przez aplikację podczas wstawiania danych lub przez ograniczenie DOMYŚLNE.
Nie można usunąć kolumny ROWGUIDCOL i nie można zmienić powiązanych ograniczeń, gdy istnieje kolumna FILESTREAM zdefiniowana dla tabeli. Kolumna ROWGUIDCOL może zostać porzucona dopiero po usunięciu ostatniej kolumny FILESTREAM.
Gdy atrybut magazynu FILESTREAM jest określony dla kolumny, wszystkie wartości dla tej kolumny są przechowywane w kontenerze danych FILESTREAM w systemie plików.
Aby zapoznać się z przykładem użycia definicji kolumny, zobacz FILESTREAM.
SORTOWANIE collation_name
Określa sortowanie kolumny. Jeśli nie zostanie określona, kolumnie zostanie przypisane domyślne sortowanie bazy danych. Nazwa sortowania może być nazwą sortowania systemu Windows lub nazwą sortowania SQL. Aby uzyskać listę i więcej informacji, zobacz Nazwa sortowania systemu Windows i nazwa sortowania programu SQL Server.
Klauzulę COLLATE można użyć do określenia sortowania tylko kolumn typów danych char, varchar, nchar i nvarchar .
Aby uzyskać więcej informacji na temat klauzuli COLLATE , zobacz COLLATE.
NULL | NIE NULL
Określa, czy NULL wartości są dozwolone w kolumnie.
NULL nie jest ściśle ograniczeniem, ale można go określić tak jak NOT NULL.
[ OGRANICZENIE constraint_name ]
Określa początek DEFAULT definicji wartości. Aby zachować zgodność z wcześniejszymi wersjami programu SQL Server, do elementu DEFAULTmożna przypisać nazwę ograniczenia .
constraint_name musi przestrzegać reguł identyfikatorów, z tą różnicą, że nazwa nie może zaczynać się od znaku numeru (#). Jeśli constraint_name nie zostanie określona, do definicji zostanie przypisana DEFAULT nazwa wygenerowana przez system.
DEFAULT
To słowo kluczowe, które określa wartość domyślną kolumny.
DEFAULT definicje mogą służyć do podawania wartości dla nowej kolumny w istniejących wierszach danych.
DEFAULT nie można zastosować definicji do kolumn znacznika czasu ani kolumn z właściwością IDENTITY . Jeśli dla kolumny typu zdefiniowanego przez użytkownika określono wartość domyślną, typ musi obsługiwać niejawną konwersję z constant_expression do typu zdefiniowanego przez użytkownika.
constant_expression
Jest wartością literału , NULLlub funkcją systemową używaną jako domyślna wartość kolumny. W przypadku użycia z kolumną zdefiniowaną jako typ zdefiniowany przez użytkownika programu .NET Framework implementacja typu musi obsługiwać niejawną konwersję z constant_expression do typu zdefiniowanego przez użytkownika.
Z WARTOŚCIAMI
Podczas dodawania kolumny i DEFAULT ograniczenia, jeśli kolumna zezwala na wartość NULLS, WITH VALUES ustawia wartość nowej kolumny na wartość podaną w dla DEFAULT constant_expression istniejących wierszy.
Jeśli dodawana kolumna nie zezwala na wartości NULLS, w przypadku istniejących wierszy wartość kolumny będzie zawsze ustawiana na wartość podaną w elem DEFAULT constant expression.
Począwszy od programu SQL Server 2012 (11.x), może to być operacja dodawania metadanych nie-null-columns-as-an-online-operation.
Jeśli jest on używany, gdy powiązana kolumna nie jest również dodawana, nie ma żadnego efektu.
Określa, że wartość podana w pliku DEFAULT constant_expression jest przechowywana w nowej kolumnie, która jest dodawana do istniejących wierszy. Jeśli dodana kolumna zezwala na wartości null i określono wartości WITH VALUES, wartość domyślna jest przechowywana w nowej kolumnie, która jest dodawana do istniejących wierszy. Jeśli WITH VALUES nie określono kolumn, które zezwalają na wartości null, wartość NULL jest przechowywana w nowej kolumnie w istniejących wierszach. Jeśli nowa kolumna nie zezwala na wartości null, wartość domyślna jest przechowywana w nowych wierszach niezależnie od tego, czy określono wartość WITH VALUES.
IDENTITY
Określa, że nowa kolumna jest kolumną tożsamości. Aparat bazy danych programu SQL Server udostępnia unikatową, przyrostową wartość dla kolumny. Po dodaniu kolumn identyfikatorów do istniejących tabel numery tożsamości są dodawane do istniejących wierszy tabeli z wartościami inicjacji i przyrostu. Kolejność aktualizowania wierszy nie jest gwarantowana. Numery tożsamości są również generowane dla wszystkich nowych wierszy, które są dodawane.
Kolumny tożsamości są często używane z PRIMARY KEY ograniczeniami, aby służyć jako unikatowy identyfikator wiersza dla tabeli. Właściwość IDENTITY można przypisać do kolumny tinyint, smallint, int, bigint, decimal(p,0)lub numeryczne (p,0). Dla tabeli można utworzyć tylko jedną kolumnę tożsamości. Nie DEFAULT można używać słowa kluczowego i powiązanych wartości domyślnych z kolumną tożsamości. Należy określić zarówno nasion, jak i inkrementację, lub nie. Jeśli żadna z nich nie zostanie określona, wartość domyślna to (1,1).
Note
Nie można zmodyfikować istniejącej kolumny tabeli w celu dodania IDENTITY właściwości.
Dodanie kolumny tożsamości do opublikowanej tabeli nie jest obsługiwane, ponieważ może spowodować, że kolumna zostanie zreplikowana do subskrybenta. Wartości w kolumnie tożsamości w programie Publisher zależą od kolejności, w której wiersze tabeli, których dotyczy problem, są fizycznie przechowywane. Wiersze mogą być przechowywane inaczej w subskrybentu; w związku z tym wartość kolumny tożsamości może być inna dla tych samych wierszy.
Aby wyłączyć IDENTITY właściwość kolumny, zezwalając na jawne wstawianie wartości, użyj polecenia SET IDENTITY_INSERT.
nasienie Wartość użyta dla pierwszego wiersza załadowanego do tabeli.
wzrost Wartość przyrostowa dodana do wartości tożsamości poprzedniego wiersza, który został załadowany.
NIE DOTYCZY REPLIKACJI
Dotyczy: SQL Server 2008 (10.0.x) i nowsze wersje.
Można określić dla IDENTITY właściwości . Jeśli ta klauzula IDENTITY jest określona dla właściwości, wartości nie są zwiększane w kolumnach tożsamości, gdy agenci replikacji wykonują operacje wstawiania.
ROWGUIDCOL
Dotyczy: SQL Server 2008 (10.0.x) i nowsze wersje.
Określa, że kolumna jest globalnie unikatową kolumną identyfikatora wiersza.
ROWGUIDCOL Można przypisać tylko do kolumny uniqueidentifier , a jako kolumnę można wyznaczyć tylko jedną unikatową kolumnę na tabelę ROWGUIDCOL .
ROWGUIDCOL Nie można przypisać do kolumn typów danych zdefiniowanych przez użytkownika.
ROWGUIDCOL nie wymusza unikatowości wartości przechowywanych w kolumnie.
ROWGUIDCOL Ponadto nie generuje automatycznie wartości dla nowych wierszy wstawionych do tabeli. Aby wygenerować unikatowe wartości dla każdej kolumny, użyj NEWID() funkcji w INSERT instrukcjach lub określ NEWID() funkcję jako domyślną dla kolumny. Aby uzyskać więcej informacji, zobacz NEWID (Transact-SQL) i INSERT (Transact-SQL).
SPARSE
Wskazuje, że kolumna jest rozrzedliwą kolumną. Przechowywanie rozrzedzonych kolumn jest zoptymalizowane pod kątem wartości null. Nie można wyznaczyć kolumn rozrzednych jako NOT NULL. Aby uzyskać dodatkowe ograniczenia i więcej informacji o rozrzednych kolumnach, zobacz Use Sparse Columns.
<column_constraint>
Aby uzyskać definicje argumentów ograniczeń kolumny, zobacz column_constraint (Transact-SQL).
SZYFROWANE Z
Określa szyfrowanie kolumn przy użyciu funkcji Always Encrypted .
ENCRYPTED WITH nie jest obsługiwany w bazie danych SQL w Microsoft Fabric.
COLUMN_ENCRYPTION_KEY = key_name
Określa klucz szyfrowania kolumny. Aby uzyskać więcej informacji, zobacz CREATE COLUMN ENCRYPTION KEY (Transact-SQL).
ENCRYPTION_TYPE = { DETERMINISTYCZNY | LOSOWO }
Szyfrowanie deterministyczne używa metody, która zawsze generuje tę samą zaszyfrowaną wartość dla dowolnej wartości zwykłego tekstu. Użycie szyfrowania deterministycznego umożliwia wyszukiwanie przy użyciu porównywania równości, grupowania i łączenia tabel przy użyciu sprzężeń równości opartych na zaszyfrowanych wartościach, ale może również umożliwić nieautoryzowanym użytkownikom odgadnięcie informacji o zaszyfrowanych wartościach, sprawdzając wzorce w zaszyfrowanej kolumnie. Łączenie dwóch tabel w kolumnach zaszyfrowanych deterministycznie jest możliwe tylko wtedy, gdy obie kolumny są szyfrowane przy użyciu tego samego klucza szyfrowania kolumny. Szyfrowanie deterministyczne musi używać sortowania kolumn z binarnym2 kolejnością sortowania dla kolumn znaków.
szyfrowania losowego używa metody, która szyfruje dane w mniej przewidywalny sposób. Szyfrowanie losowe jest bezpieczniejsze, ale uniemożliwia wszelkie obliczenia i indeksowanie w zaszyfrowanych kolumnach, chyba że wystąpienie programu SQL Server obsługuje funkcję Always Encrypted z bezpiecznymi enklawami.
Jeśli używasz funkcji Always Encrypted (bez bezpiecznych enklaw), użyj szyfrowania deterministycznego, aby wyszukiwać kolumny przy użyciu parametrów lub parametrów grupowania, na przykład numeru identyfikatora rządu. Użyj szyfrowania losowego, dla danych, takich jak numer karty kredytowej, który nie jest grupowany z innymi rekordami lub używany do łączenia tabel, i które nie są wyszukiwane, ponieważ używasz innych kolumn (takich jak numer transakcji), aby znaleźć wiersz zawierający zaszyfrowaną kolumnę zainteresowania.
Jeśli używasz funkcji Always Encrypted z bezpiecznymi enklawami, randomizowane szyfrowanie jest zalecanym typem szyfrowania.
Kolumny muszą być kwalifikowanym typem danych.
ALGORITHM
Dotyczy: SQL Server 2016 (13.x) i nowszych, SQL Database.
Musi być "AEAD_AES_256_CBC_HMAC_SHA_256".
Aby uzyskać więcej informacji, w tym ograniczenia funkcji, zobacz Always Encrypted (aparat bazy danych).
DODAJ MASKOWANE Z (FUNKCJA = ' mask_function ')
Dotyczy: SQL Server 2016 (13.x) i nowszych, SQL Database.
Określa dynamiczną maskę danych. mask_function jest nazwą funkcji maskowania z odpowiednimi parametrami. Dostępne są następujące funkcje:
default()email()partial()random()
Aby uzyskać informacje o parametrach funkcji, zobacz dynamiczne maskowanie danych.
Remarks
Jeśli kolumna zostanie dodana o unikatowym typie danychidentyfikatora , można ją zdefiniować przy użyciu wartości domyślnej, która używa NEWID() funkcji do podawania unikatowych wartości identyfikatorów w nowej kolumnie dla każdego istniejącego wiersza w tabeli. Aby uzyskać więcej informacji, zobacz NEWID (Transact-SQL).
Aparat bazy danych nie wymusza kolejności określania DEFAULTograniczeń kolumn , IDENTITY, ROWGUIDCOLlub w definicji kolumny.
Instrukcja ALTER TABLE nie powiedzie się, jeśli dodanie kolumny spowoduje, że rozmiar wiersza danych przekroczy 8060 bajtów.
Examples
Aby zapoznać się z przykładami, zobacz ALTER TABLE (Transact-SQL).