Udostępnij za pośrednictwem


table_constraint (języka Transact-SQL)

Określa właściwości ograniczenia klucza podstawowego, unikatowy, klucz OBCY lub wyboru lub definicji domyślnie dodawane do tabela za pomocą ALTER TABLE.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

[ CONSTRAINT constraint_name ] 
{ 
    { PRIMARY KEY | UNIQUE } 
        [ CLUSTERED | NONCLUSTERED ] 
        (column [ ASC | DESC ] [ ,...n ] )
        [ WITH FILLFACTOR = fillfactor 
        [ WITH ( <index_option>[ , ...n ] ) ]
        [ ON { partition_scheme_name ( partition_column_name ... )
          | filegroup | "default" } ] 
    | FOREIGN KEY 
        ( column [ ,...n ] )
        REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ] 
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
        [ NOT FOR REPLICATION ] 
    | DEFAULT constant_expression FOR column [ WITH VALUES ] 
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression )
}

Argumenty

  • OGRANICZENIA
    Określa początek definicji ograniczenie klucza podstawowego, unikatowy, klucz OBCY lub wyboru lub domyślnie.

  • 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 nie jest podany, nazwa wygenerowana przez system jest przypisana do ograniczenia.

  • 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.

  • column
    Jest kolumna lub listę kolumn określona w nawiasach, które są używane w nowe ograniczenie.

  • [ ASC | DESC]
    Określa kolejność sortowania kolumna lub kolumn, uczestniczących w tabela ograniczeń.Wartość domyślna to ASC.

  • Z FILLFACTOR **=**fillfactor
    Określa, jak pełne Aparat baz danych powinien nadać każdej strona indeksu używane do przechowywania danych indeksu.Określona przez użytkownika fillfactor możliwe wartości od 1 do 100.Jeśli wartość nie zostanie określona, domyślnie wynosi 0.

    Ważna informacjaWaż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| "domyślną"" }
    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.

  • referenced_table_name
    tabela odwołuje się ograniczenie klucza OBCEGO.

  • ref_column
    Jest kolumna lub listę kolumn 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.

    NA DELETE CASCADE nie można zdefiniować 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.VendorID klucz obcy odwołania Vendor.VendorID kluczpodstawowego.

    Jeśli wiersz w wykonaniu DELETE instrukcja dostawcy tabela i ON DELETE CASCADE akcja określono dla ProductVendor.VendorID, 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 i nie ma żadnych jawne domyślną wartość zestaw, NULL 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.

    NA UPDATE CASCADE nie można zdefiniować 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.VendorID klucz obcy odwołania Vendor.BusinessEntityID 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, jak również 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.

  • DOMYŚLNE
    Określa wartość domyślną dla kolumna.Definicje domyślne można podać wartości dla nowej kolumna w istniejących wierszy danych.Definicje DOMYŚLNEJ nie można dodać kolumny, które mają timestamp Typ danych, właściwośćtożsamości, istniejącą definicję domyślne lub domyślne powiązania.Jeśli kolumna zawiera istniejące ustawienie domyolne, domyślna musi usunięte przed dodaniem nowego domyślnego.Jeżeli określono wartość domyślną dla typ zdefiniowany przez użytkownika kolumna, typ, powinien obsługiwać niejawna konwersja z constant_expression do typ zdefiniowany przez użytkownika.Aby zachować zgodność ze starszymi wersjami programu SQL Server, nazwa ograniczenia mogą być przypisane do DOMYŚLNYCH.

  • constant_expression
    To wartość literału, NULL lub systemu funkcja , która jest używana jako wartość domyślna kolumna .Jeśli constant_expression używane w połączeniu z kolumna zdefiniowane za Microsoft .NET Framework typ zdefiniowany przez użytkownikaimplementacji typu musi obsługiwać niejawna konwersja z constant_expression typ zdefiniowany przez użytkownika.

  • DLAcolumn
    Określa kolumna związane z tabela— definicja domyślnypoziom .

  • WARTOŚCI
    Określa, że wartość podana w DOMYŚLNEJ constant_expression jest przechowywany w nowej kolumna , który został dodany do istniejących wierszy.WARTOŚCI można określić tylko, gdy domyślne określone w Dodaj kolumnawklauzula. Jeśli dodane kolumna pozwala na wartości null i z wartości jest określony, wartość domyślna jest przechowywany w nowej kolumna dodawane do istniejących wierszy.Jeżeli nie określono wartości z kolumn, których wartości null, NULL jest przechowywana w nowej kolumna w istniejących wierszy.Jeśli nowa kolumna nie zezwala na wartości null, wartość domyślna jest przechowywana w nowych wierszy, niezależnie od tego, czy określono wartości Z.

  • 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

Ograniczenia zostaną dodane, weryfikowane wszystkie istniejące dane o naruszeniach ograniczeń.Jeśli występuje naruszenie ALTER TABLE i zwracany jest błąd.

Po dodaniu nowego ograniczenia na klucz podstawowy lub unikatowe do istniejącej kolumnadanych w kolumna lub kolumny muszą być unikatowe.Jeżeli znajdują się zduplikowane wartości, ALTER TABLE nie powiedzie się.Opcja Z NOCHECK nie ma wpływu po dodaniu ograniczenia na klucz podstawowy lub unikatowe.

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.

Przykłady

Aby zapoznać się z przykładami, zobacz ALTER TABLE (Transact-SQL).