column_constraint (języka Transact-SQL)
Określa właściwości ograniczenie klucz podstawowy, klucz OBCY, unikatowe lub wyboru nowych definicji kolumna dodawane do tabela za pomocą ALTER TABLE.
Składnia
[ 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 ograniczenie klucza podstawowego, unikatowy, klucz OBCY lub wyboru.constraint_name
Jest to nazwa ograniczenia.Warunek ograniczający nazwy muszą spełniać zasady dla identyfikatorów, z tym wyjątkiem, że nazwa nie może rozpoczynać się znakiem numeru (#).Jeśli constraint_name jest nie dostarczonych, nazwa wygenerowane przez system jest przypisana do ograniczenia.NULL | NIEDOZWOLONE WARTOŚCI NULL
Określa, czy kolumna można wprowadzać wartości null .Kolumny nie dopuszczającej wartości null można dodać tylko wtedy, gdy mają one domyślne określone.Jeśli nowa kolumna zezwala na wartości null i domyślnie nie jest określony, nowa kolumna zawiera wartość NULL dla każdego wiersza w tabela.Jeśli nowa kolumna zezwala na wartości null i domyślnej definicji dodaje się nową kolumnaopcji o wartości można użyć do przechowywania wartości domyślne w nowej kolumna dla każdego istniejącego wiersza w tabela.Jeśli nowa kolumna nie zezwala na wartości null , DOMYŚLNEJ definicji należy dodać nową kolumna.Nową kolumna ładuje się automatycznie w nowych kolumn w każdym wierszu istniejącą wartość domyślną.
Przestroga Dodanie kolumna wymaga zmiany fizyczne do wierszy danych tabela, takich jak dodawanie wartości DOMYŚLNYCH do każdego wiersza blokady są przechowywane w tabela , podczas wykonywania instrukcji ALTER TABLE.Wpływa to na możliwość zmiany zawartości tabela blokada znajduje się w miejscu.Natomiast dodawanie kolumna , która zezwala na wartości null i nie określa wartości domyślne to operacja metadane tylko i pociąga za sobą nie blokad.
Korzystając z instrukcji ALTER TABLE lub CREATE TABLE, 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 kolumna .Zaleca się, że zawsze jawnie zdefiniować kolumny noncomputed jako NULL lub NOT NULL lub, jeśli używany jest typ danych zdefiniowany przez użytkownika umożliwia Użyj domyślnej opcje dopuszczania wartości null typ danych kolumna .Aby uzyskać więcej informacji, zobacz CREATE TABLE (Transact-SQL).
KLUCZ PODSTAWOWY
To ograniczenie wymusza obiekt integralność dla określonej kolumna lub kolumn przy użyciu indeks unikatowy.Dla każdej tabelamożna utworzyć tylko jedno ograniczenie klucza podstawowego.UNIKATOWE
To ograniczenie, które przewiduje obiekt integralność określona kolumna lub kolumny przy użyciu indeks unikatowy.KLASTROWANE | NIEKLASTROWANY
Określa, że klastrowany lub ograniczenia na klucz podstawowy lub unikatowe tworzony jest indeks nieklastrowany .Domyślnie CLUSTERED ograniczeń klucza podstawowego.Domyślne ograniczenie typu UNIQUE do NONCLUSTERED.Jeśli ograniczenie klastrowany lub indeks już istnieje w tabela, nie można określić CLUSTERED.Jeśli ograniczenie klastrowany lub indeks już istnieje w tabela, domyślne ograniczenia klucza podstawowego do NONCLUSTERED.
Kolumny, które są ntext, text, varchar(max), nvarchar(max), varbinary(max), xml, lub image typów danych nie może być określony jako kolumny dla indeksu.
Z FILLFACTOR **=**fillfactor
Określa, jak pełne Microsoft Aparat baz danych powinien nadać każdej strona indeksu używane do przechowywania danych indeksu.Wartości określone przez użytkownika fillfactor mogą być od 1 do 100.Jeśli wartość nie zostanie określona, domyślnie wynosi 0.Ważne: Documenting Z FILLFACTOR = fillfactor jako jedyna opcja Indeks dotyczący ograniczenia na klucz podstawowy lub unikatowe utrzymywane w celu zapewnienia zgodności z poprzednimi wersjami, ale nie zostaną udokumentowane w ten sposób w przyszłych wydaniach.Inne opcje indeksu można określić w index_option klauzula ALTER TABLE.
ON { partition_scheme_name**(partition_column_name)** | filegroup | "default"}
Określa lokalizacja przechowywania utworzyć ograniczenie indeks.Jeśli partition_scheme_name jest określony indeks jest podzielony na partycje i partycje są mapowane na aplikacjami, które zostały określone przez partition_scheme_name.Jeśli filegroup jest określony indeks zostanie utworzony w nazwie grupa plików.Jeśli "domyślną" jest określona lub jeśli w ogóle nie jest określony, indeks jest tworzony w tej samej grupa plików jako tabela.Jeśli zostanie określony na, po dodaniu indeks klastrowany dla klucza podstawowego ani ograniczenia UNIQUE, całej tabela jest przenoszony do określona grupa plików podczas tworzenia indeks klastrowany .W tym kontekście, domyślnie nie jest słowem kluczowym.Jest to identyfikator domyślnej grupa plików i musi być rozdzielany w sprawie "domyślną" lub na domyślne**[]**.Jeśli "domyślną" jest określona opcja QUOTED_IDENTIFIER musi być w bieżącej sesja.Jest to ustawienie domyślne.Aby uzyskać więcej informacji, zobacz ZESTAW QUOTED_IDENTIFIER (Transact-SQL).
ODWOŁANIA DO KLUCZA OBCEGO
To ograniczenie, które zapewnia więzy integralność danych w kolumna.Ograniczenia klucza OBCEGO wymagają, że każda wartość w kolumna istnieje w określonej kolumna w tej tabela.schema_name
Jest to nazwa schematu, do której należy tabela odwołuje się ograniczenie klucza OBCEGO.referenced_table_name
tabela odwołuje się ograniczenie klucza OBCEGO.ref_column
Jest kolumna w nawiasach odwołuje się nowe ograniczenie klucza OBCEGO.PRZY USUWANIU { żadnej akcji | KASKADOWO | USTAW WARTOŚĆ NULL | USTAWIANIE DOMYŚLNEJ}
Określa, jaka akcja dzieje się z wierszy w tabela zostanie zmieniona, jeżeli te wiersze relacji więzy i odwołanie wiersz został usunięty z tabelanadrzędnej.Wartością domyślną jest Brak akcji.BRAK AKCJI
Aparat baz danych programu SQL Server Raises komunikat o błędzie i usuwania akcja dla wiersza w tabela nadrzędnej jest wycofywany Wstecz.KASKADA
Odpowiednie wiersze są usuwane z tabela w odwołującym się usunięcie tego wiersza z tabelanadrzędnej.USTAW WARTOŚĆ NULL
Wszystkie wartości wchodzące w skład klucz obcy są zestaw na wartość NULL po usunięciu odpowiedni wiersz w tabela nadrzędnej.To ograniczenie wykonaćkolumn klucz obcy musi przyjmować wartości zerowej.USTAWIANIE DOMYŚLNEGO
Wartości, które obejmują klucz obcy są zestaw wartości domyślne, po usunięciu odpowiedni wiersz w tabela nadrzędnej.To ograniczenie do wykonaćwszystkich kolumn klucz obcy musi mieć definicje domyślne.Jeśli kolumna jest nullable, nie ma żadnych jawne domyślną wartość zestawNULL staje się niejawna domyślna wartość kolumna.
Nie określaj KASKADOWO, jeśli tabela zostaną uwzględnione w korespondencji seryjnej publikacja , która wykorzystuje rekordy logiczne.Aby uzyskać więcej informacji o rekordach logiczne zobacz Zmiany do wierszy powiązanych z rekordami logiczne grupowanie.
Nie można zdefiniować ON DELETE CASCADE, jeśli wyzwalacza INSTEAD OF DELETE na już istnieje w tabela jest przeliczana.
Na przykład w AdventureWorks2008R2 bazy danych, ProductVendor tabela ma relacji więzy z dostawcy tabela.ProductVendor.BusinessEntityID klucz obcy odwołania Vendor.BusinessEntityID kluczpodstawowego.
Jeśli wiersz w wykonaniu DELETE instrukcja dostawcy tabelai ON DELETE CASCADE akcja określono dla ProductVendor.BusinessEntityID, Aparat baz danych sprawdza, czy jeden lub więcej wierszy zależne w ProductVendor tabela.Jeśli istnieją, zależne od wierszy w ProductVendor tabela zostaną usunięte, w uzupełnieniu do wierszy, do których odwołuje się dostawcy tabela.
I odwrotnie, jeśli brak akcji Aparat baz danych zgłasza błąd i wycofuje usuwania akcja dostawcy wierszy, gdy co najmniej jeden wiersz w ProductVendor tabela , która odwołuje się do niej.
PRZY aktualizacji { żadnej akcji | KASKADOWO | USTAW WARTOŚĆ NULL | USTAWIANIE DOMYŚLNEJ}
Określa, jaka akcja dzieje się z wierszy w tabela zmodyfikowane, jeśli wiersze mają relacji więzy i odwołanie wiersza jest aktualizowana w tabelanadrzędnej.Wartością domyślną jest Brak akcji.BRAK AKCJI
Aparat baz danych Raises komunikat o błędzie, a aktualizacja akcja dla wiersza w tabela nadrzędnej jest wycofywany Wstecz.KASKADA
Odpowiednie wiersze są aktualizowane w odwołującym się tabela podczas aktualizowania tego wiersza w tabelanadrzędnej.USTAW WARTOŚĆ NULL
Wartości wchodzące w skład klucz obcy są zestaw na wartość NULL podczas aktualizacji odpowiedniego wiersza w tabela nadrzędnej.To ograniczenie wykonaćkolumn klucz obcy musi przyjmować wartości zerowej.USTAWIANIE DOMYŚLNEGO
Wszystkie wartości wchodzące w skład klucz obcy są zestaw wartości domyślne aktualizacji odpowiedniego wiersza w tabela nadrzędnej.To ograniczenie do wykonaćwszystkich kolumn klucz obcy musi mieć definicje domyślne.Jeśli kolumna jest nullable, nie ma żadnych jawne domyślną wartość zestawNULL staje się niejawna domyślna wartość kolumna.
Nie określaj KASKADOWO, jeśli tabela zostaną uwzględnione w korespondencji seryjnej publikacja , która wykorzystuje rekordy logiczne.Aby uzyskać więcej informacji o rekordach logiczne zobacz Zmiany do wierszy powiązanych z rekordami logiczne grupowanie.
Nie można zdefiniować ON UPDATE CASCADE, jeśli wyzwalacza INSTEAD OF UPDATE na już istnieje w tabela jest przeliczana.
Na przykład w AdventureWorks2008R2 bazy danych, ProductVendor tabela ma relacji więzy z dostawcy tabela.ProductVendor.BusinessEntityID klucz obcy odwołania Vendor.VendorID kluczpodstawowego.
Jeśli aktualizacja instrukcja jest wykonywane w wierszu w dostawcy ON UPDATE CASCADE akcja itabela jest określony dla ProductVendor.BusinessEntityID, Aparat baz danych sprawdza, czy jeden lub więcej wierszy zależne w ProductVendortabela. Jeśli istnieją, zależne od wiersza w ProductVendor tabela zostanie zaktualizowana, oprócz wierszy, do których odwołuje się dostawcy tabela.
I odwrotnie, jeśli brak akcji Aparat baz danych zgłasza błąd i przywraca poprzednie wersje aktualizacji akcja dostawcy wierszy, gdy co najmniej jeden wiersz w ProductVendor tabela , która odwołuje się do niej.
NIE DLA REPLIKACJI
Można określić ograniczenia klucza OBCEGO i ograniczeń CHECK.Jeżeli określono tę klauzula ograniczenia, ograniczenia nie są wymuszane podczas replikacja agentów wykonać Wstaw, zaktualizować lub usunąć operacje.Aby uzyskać więcej informacji, zobacz Kontrolowanie ograniczenia, tożsamości i wyzwalaczy z nie dla replikacji.WYBORU
To ograniczenie wymusza domena integralność poprzez ograniczenie możliwych wartości, które mogą być wprowadzane do kolumna lub kolumn.logical_expression
Jest logiczną wyrażenie używane w ograniczenie typu CHECK i zwraca wartość PRAWDA lub FAŁSZ.logical_expressionużywane z wyboru ograniczenia nie mogą odwoływać się innej tabela , ale można odwoływać się do innych kolumn w tej samej tabela w tym samym wierszu.wyrażenie nie może odwoływać się do typu danych alias .
Uwagi
Każde ograniczenie klucza podstawowego i unikatowe generuje indeks.Numer ograniczenia UNIQUE i klucza podstawowego nie może spowodować liczba indeksów w tabela , przekracza 1 indeks klastrowanyi 999 zbudowania indeksów nie klastrowanych.
Zobacz także