column_constraint (Transact-SQL)
Określa właściwości, który jest częścią nowej definicji kolumna dodawane do tabela za pomocą ograniczenia klucz podstawowy, klucz obcy, unikatowy lub wyboru ALTER tabela.
[ 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 )
}
Argumenty
OGRANICZENIA
Określa początek definicji ograniczenia klucz podstawowy, unikatowy, klucz obcy lub wyboru.constraint_name
To nazwa ograniczenia.Ograniczenie nazwy muszą być zgodne z zasadami identyfikatory, z tą różnicą, że nazwa nie może rozpoczynać się znakiem numeru (#).Jeśli constraint_name to nie jest podany, wygenerowane przez system nazwę jest przypisany do ograniczenia.WARTOŚCI NULL | NIE JEST PUSTY
Określa, czy do kolumna można wprowadzać wartości null.Kolumny, które nie zezwalają na wartości null mogą być dodawane tylko wtedy, gdy mają one domyślne, określona.Jeśli nowa kolumna zezwala na wartości null i domyślnie nie jest określony, nowa kolumna zawiera wartości NULL dla każdego wiersza w tabela.Jeśli nowa kolumna zezwala na wartości null wartości i domyślnej definicji dodaje się nową kolumnę, Opcja WITH VALUES może być używana do przechowywania wartości domyślne w nowej kolumnie dla każdego istniejącego wiersza w tabela.Jeśli nowa kolumna nie zezwala na wartości null, DOMYŚLNĄ definicją należy dodać nową kolumnę.Nowa kolumna ładuje się automatycznie w nowych kolumn w każdym wierszu istniejącą wartość domyślną.
Ostrzeżenie
Dodanie kolumna wymaga zmian wiersze danych tabela, takich jak dodawanie DEFAULT wartości do każdego wiersza w fizycznej blokady są przechowywane w tabela, podczas wykonywania instrukcji ALTER tabela.Ma to wpływ na możliwość zmiany zawartości tabela blokada znajduje się w miejscu.Z drugiej strony dodając kolumna, która zezwala na wartości null, a nie określa wartość domyślną to tylko operacja metadane i pociąga za sobą nie blokad.
Korzystając z CREATE tabela lub ALTER tabela, ustawienia bazy danych i sesja wpływ i ewentualnie zastępują opcje dopuszczania wartości null typu danych, która jest używana w definicji kolumn.Firma Microsoft zaleca, aby zawsze jawnie zdefiniować noncomputed kolumn jako wartość NULL lub NOT NULL lub, jeśli używany jest typ danych zdefiniowany przez użytkownika, zezwolić na kolumna, aby użyć opcje dopuszczania wartości null domyślnego typu danych.Aby uzyskać więcej informacji zobaczCREATE TABLE (Transact-SQL).
KLUCZ PODSTAWOWY
Ograniczenie wymuszające integralność jednostki dla określonej kolumny lub kolumn za pomocą unikatowego indeksu.Dla każdej tabeli można utworzyć tylko jedno ograniczenie PRIMARY KEY.UNIKATOWE
Jest ograniczenie, które zapewnia integralność obiekt dla określonej kolumna lub kolumn przy użyciu unikatowego indeksu.ZGROMADZONE | NIEKLASTROWANY
Określa, że dla ograniczenia PRIMARY KEY lub UNIQUE jest tworzony indeks klastrowany lub nieklastrowany.Wartość domyślna dla ograniczeń PRIMARY KEY to CLUSTERED.Wartość domyślna dla ograniczeń UNIQUE to NONCLUSTERED.COLUMNS_UPDATED returns multiple bytes if the table on which the trigger is created contains more than eight columns, with the least significant byte being the leftmost.COLUMNS_UPDATED returns TRUE for all columns in INSERT actions because the columns have either explicit values or implicit (NULL) values inserted.
Kolumny, których ntext, text, varchar(max), nvarchar(max), varbinary(max), xml, lub image Nie można określić typy danych jako kolumny dla indeksu.
WITH FILLFACTOR **=**fillfactor
Specifies how full the Microsoft Database Engine should make each index page used to store the index data.Fillfactor określone przez użytkownika wartości mogą być od 1 do 100.Jeżeli nie określono wartości, wartość domyślna jest równa 0.
Important Note:Dokumentowanie WITH FILLFACTOR = fillfactor zwalnia to jedyna opcja indeksu dotyczy klucz podstawowy lub UNIQUE ograniczenia jest przechowywana w celu zapewnienia zgodności z poprzednimi wersjami, ale nie będzie nie udokumentowane w ten sposób w przyszłości. Można określić inne opcje indeksu w index_option klauzula instrukcji ALTER tabela.
ON { partition_scheme_name**(partition_column_name)** | filegroup | "default" }
Określa lokalizację przechowywania indeksu tworzonego dla ograniczenia.W przypadku określenia parametru partition_scheme_name indeks jest dzielony na partycje. Partycje te są mapowane na grupy plików określone przez parametr partition_scheme_name.W przypadku określenia parametru filegroup indeks jest tworzony w nazwanej grupie plików.W przypadku określenia wartości "default" lub nieokreślenia klauzuli ON indeks jest tworzony w tej samej grupie plików co tabela.Określenie klauzuli ON przy dodawaniu indeksu klastrowanego do ograniczenia PRIMARY KEY lub UNIQUE powoduje, że cała tabela zostaje przeniesiona do określonej grupy plików podczas tworzenia indeksu klastrowanego.W tym kontekście, domyślnie nie jest słowem kluczowym.It is an identifier for the default filegroup and must be delimited, as in ON "default" or ON [default].Jeśli **"**domyślne " jest określona opcja QUOTED_IDENTIFIER musi być włączone dla bieżącej sesja.Jest to ustawienie domyślne.Aby uzyskać więcej informacji zobaczzestaw QUOTED_IDENTIFIER (języka Transact-SQL).
ODWOŁANIA DO klucz obcy
Jest ograniczenie, które zapewnia więzów integralność danych kolumna.klucz obcy ograniczenia wymagają, że każda wartość kolumna istnieje w określonej kolumnie w tabela, do którego istnieje odwołanie.schema_name
To nazwa schematu, do której należy tabela odwołuje się ograniczenie klucz obcy.referenced_table_name
W tabela jest wywoływanym przez ograniczenie klucz obcy.ref_column
Jest to kolumna w nawiasach, do którego odnosi się nowe ograniczenie klucz obcy.ON DELETE {BRAK akcja | CASCADE | zestaw NULL | zestaw DEFAULT}
Określa, jaka akcja stanie się z wierszy w tabela zostanie zmieniona, jeśli te wiersze relacji więzy i do których istnieją odwołania wiersza zostanie usunięty z tabela nadrzędnej.Wartością domyślną jest NO Akcja.BRAK akcja
The SQL Server Database Engine raises an error and the delete akcja on the row in the parent tabela is rolled back.KASKADOWO
Odpowiednie wiersze są usuwane z tabela odwołujący się usunięcie tego wiersza z tabela nadrzędnej.zestaw NULL
Wszystkie wartości wchodzące w skład klucz obcy są zestaw wartość null, gdy zostanie usunięty odpowiedni wiersz w tabela nadrzędnej.To ograniczenie do wykonać kolumny klucz obcy musi być niewymaganym.zestaw DOMYŚLNE
Wszystkie wartości, które składają się klucz obcy są ustawione na wartości domyślne, gdy zostanie usunięty odpowiedni wiersz w tabela nadrzędnej.To ograniczenie wykonać wszystkie kolumny klucz obcy musi posiadać domyślnej definicji.Jeżeli kolumna jest pustych, jeśli nie ma żadnych jawnych domyślny zestaw wartości, NULL staje się pośrednie domyślna wartość w kolumnie.
Nie należy określać CASCADE, jeśli w tabela mają zostać uwzględnione w publikacja korespondencji seryjnej, która korzysta z logicznego rekordów.Aby uzyskać więcej informacji o rekordach logiczny zobacz Grupowanie zmiany pokrewne wiersze z rekordami logicznych.
Nie można zdefiniować ON DELETE CASCADE, jeśli wyzwalacz Z INSTEAD ON DELETE już tabela, która jest są zmieniane.
Na przykład w AdventureWorks Baza danych, ProductVendor tabela jest w relacji więzy z Dostawcy tabela.The ProductVendor.VendorID klucz obcy references the Vendor.VendorID klucz podstawowy.
Jeśli Instrukcja DELETE jest wykonywane w wierszu w Dostawcy określonej dla tabela i ON DELETE CASCADE akcjaProductVendor.VendorID, the Database Engine sprawdza, czy jeden lub więcej wierszy zależne w ProductVendor tabela.Ile zależnego od wierszy w ProductVendor tabela zostaną usunięte wraz z wiersza, do którego odwołuje się Dostawcy tabela.
I odwrotnie, jeśli akcja nie jest określony, Database Engine zgłasza błąd i powoduje powrót akcji usuwania Dostawcy wierszy, gdy istnieje co najmniej jeden wiersz w ProductVendor tabela, która odwołuje się go.
ON UPDATE {BRAK akcja | CASCADE | zestaw NULL | zestaw DEFAULT}
Określa, jakie akcja stanie się z wierszy w tabela zmieniona podczas tych wierszy, mają relacji więzy i do których istnieją odwołania wiersza jest aktualizowana w tabela nadrzędnej.Wartością domyślną jest NO Akcja.BRAK akcja
The Database Engine raises an error, and the update akcja on the row in the parent tabela is rolled back.KASKADOWO
Odpowiednie wiersze są aktualizowane w tabela odwołujący się podczas aktualizowania tego wiersza w tabela nadrzędnej.zestaw NULL
Wszystkie wartości wchodzące w skład klucz obcy są zestaw wartości null podczas aktualizacji odpowiedniego wiersza w tabela nadrzędnej.To ograniczenie do wykonać kolumny klucz obcy musi być niewymaganym.zestaw DOMYŚLNE
Wszystkie wartości wchodzące w skład klucz obcy są ustawione na wartości domyślne podczas aktualizacji odpowiedniego wiersza w tabela nadrzędnej.To ograniczenie wykonać wszystkie kolumny klucz obcy musi posiadać domyślnej definicji.Jeżeli kolumna jest pustych, jeśli nie ma żadnych jawnych domyślny zestaw wartości, NULL staje się pośrednie domyślna wartość w kolumnie.
Nie należy określać CASCADE, jeśli w tabela mają zostać uwzględnione w publikacja korespondencji seryjnej, która korzysta z logicznego rekordów.Aby uzyskać więcej informacji o rekordach logiczny zobacz Grupowanie zmiany pokrewne wiersze z rekordami logicznych.
Nie można zdefiniować ON UPDATE CASCADE, jeśli wyzwalacz Z INSTEAD ON UPDATE już tabela, która jest są zmieniane.
Na przykład w AdventureWorks Baza danych, ProductVendor tabela jest w relacji więzy z Dostawcy tabela.The ProductVendor.VendorID klucz obcy references the Vendor.VendorID klucz podstawowy.
Jeśli instrukcja UPDATE jest wykonywane w wierszu w Dostawcy określonej dla tabela i akcja ON UPDATE CASCADEProductVendor.VendorID, the Database Engine sprawdza, czy jeden lub więcej wierszy zależne w ProductVendor tabela.Jeśli dowolne istnieje, zależne od wiersza w ProductVendor tabela zostanie zaktualizowana, dodatkowo do wiersza, do którego odwołuje się Dostawcy tabeli.
I odwrotnie, jeśli akcja nie jest określony, Database Engine zgłasza błąd i powoduje powrót akcję aktualizacji Dostawcy wierszy, gdy istnieje co najmniej jeden wiersz w ProductVendor tabela, która odwołuje się go.
NIE DO replikacja
Tę klauzulę można określić dla ograniczeń FOREIGN KEY i CHECK.W przypadku jej określenia dla ograniczenia nie jest ono wymuszane, gdy agent replikacji wykonuje operacje wstawiania, aktualizacji lub usuwania.Aby uzyskać więcej informacji, zobacz Kontrolowanie ograniczenia tożsamości i wyzwalaczy z nie dla replikacja.SPRAWDŹ
Jest ograniczenie, które wymusza integralność domena, ograniczając możliwych wartości, które mogą być wprowadzane do kolumna lub kolumn.logical_expression
Is a logical expression used in a CHECK constraint and returns TRUE or FALSE.logical_expression used with CHECK constraints cannot reference another table but can reference other columns in the same table for the same row.Wyrażenie nie może odwoływać się do typu danych alias.
Remarks
Każdy ograniczenia klucz podstawowy i unikatowy generuje indeks.Liczby ograniczeń UNIQUE i klucz podstawowy nie może spowodować, że liczba indeksów w tabela, aby przekraczać 999 ponownego zbudowania indeksów nie klastrowanych i 1 indeks klastrowany.
See Also
.gif)