Udostępnij za pośrednictwem


Constraints

Ograniczenia pozwalają określić sposób Database Engine automatycznie wymusza integralność bazy danych. Ograniczenia definiowania zasad dotyczących wartości w kolumnach i są standardowy mechanizm wymuszania integralność.Korzystanie z ograniczenia jest preferowanym użyciem DML Triggers, reguły, and ustawienia domyślne.optymalizator kwerendy używa także definicje ograniczenie do tworzenia planów wykonywania kwerend wysokiej wydajności.

Klasy ograniczenia

SQL Server obsługuje następujące klasy ograniczeń:

  • NOT NULL Określa, że kolumna nie akceptuje wartości NULL.Aby uzyskać więcej informacji zobaczAllowing Null Values.

  • Ograniczenia CHECK wymuszanie integralność domena, ograniczając wartości, które mogą być umieszczane kolumna.Aby uzyskać więcej informacji zobaczCHECK Constraints.

    Ograniczenie typu CHECK określa logiczny (ma wartość PRAWDA, FAŁSZ lub nieznany) wyszukiwania warunek, który zostanie zastosowany do wszystkich wartości, które są wprowadzane kolumna.Wszystkie wartości, które mają wartość FAŁSZ, są odrzucane.Można określić wiele ograniczeń typu CHECK dla każdej kolumna.Następujący przykład przedstawia tworzenie ograniczenia chk_id. To ograniczenie Ponadto wymusza domena klucz podstawowy należy upewnić się, że tylko liczby w zakresie są wprowadzane dla klucza.

    CREATE TABLE cust_sample
       (
       cust_id            int      PRIMARY KEY,
       cust_name         char(50),
       cust_address         char(50),
       cust_credit_limit   money,
       CONSTRAINT chk_id CHECK (cust_id BETWEEN 0 and 10000 )
       )
    
  • Ograniczenia UNIQUE wymuszenia unikatowości wartości zestaw kolumn.

    Ograniczenia typu UNIQUE dwóch wierszy w tabela, nie mogą mieć taką samą wartość dla kolumny.Klucze podstawowe również wymusić unikatowość, ale klucze podstawowe nie zezwalaj na wartości NULL jako jedną z wartości unikatowe.Aby uzyskać więcej informacji zobaczUNIQUE Constraints.

  • Ograniczenia klucz podstawowy zidentyfikować kolumna lub zestaw kolumn, których nie ma wartości, które jednoznacznie identyfikują wiersze w tabela.Aby uzyskać więcej informacji zobaczPRIMARY KEY Constraints.

    Nie dwa wiersze w tabela mogą mieć tej samej wartości klucz podstawowy.Nie można wprowadzić wartość NULL dla każdej kolumna klucz podstawowy.Zaleca się używanie mały, liczba całkowita kolumna jako klucz podstawowy.Każda tabela powinna mieć klucz podstawowy.kolumna lub kombinacji kolumn, które kwalifikują się jako wartość klucz podstawowy jest określany jako klucz kandydujący.

    Poniższy przykład tworzy part_sample Tabela i określa part_nmbr pole jako klucz podstawowy.

    CREATE TABLE part_sample
             (part_nmbr      int         PRIMARY KEY,
             part_name      char(30),
             part_weight      decimal(6,2),
             part_color      char(15) );
    
  • klucz obcy ograniczenia identyfikować i wymusić relacji między tabelami.Aby uzyskać więcej informacji zobaczklucz obcy ograniczenia.

    klucz obcy w jednej tabela wskazuje klucz kandydujący w innej tabela.W poniższym przykładzie order_part Tabela ustanawia klucz obcy, która odwołuje się part_sample Tabela zdefiniowane wcześniej.

    CREATE TABLE order_part
          (order_nmbr      int,
          part_nmbr      int
             FOREIGN KEY REFERENCES part_sample(part_nmbr)
                ON DELETE NO ACTION,
          qty_ordered      int);
    GO
    

    Nie można wstawić wiersza o wartości klucz obcy z wyjątkiem wartości NULL, jeśli nie ma żadnych klucz kandydujący z tą wartością.ON klauzula DELETE Określa, jakie akcje są pobierane podczas próby usunięcia wiersza, do których istniejącego punktu kluczy obcych.Klauzula ON DELETE zawiera następujące opcje:

    • Akcja nie określa, że usunięcie zakończy się niepowodzeniem z powodu błędu.

    • CASCADE Określa, że usuwane są również wszystkie wiersze z kluczy obcych, wskazując usuniętego wiersza.

    • zestaw NULL Określa, czy wszystkie wiersze z kluczy obcych, wskazując usuniętego wiersza są ustawione na wartość NULL.

    • zestaw DEFAULT Określa, że wszystkie wiersze z kluczy obcych, wskazując usuniętego wiersza są ustawione na wartość domyślna.Aby uzyskać więcej informacji zobaczDefaults.

    Klauzula ON UPDATE Określa akcje podejmowane przy próbie aktualizacji wartości klucz kandydata do których punkt kluczy obcych.Tę klauzulę obsługuje również Akcja NO, opcje CASCADE, zestaw NULL i zestaw DEFAULT.

Ograniczenia tabel i kolumn

Ograniczenia mogą być ograniczenia kolumna lub ograniczenia tabela.Ograniczenie kolumna jest określany jako części definicji kolumna i ma zastosowanie tylko do tej kolumna.Ograniczenia w poprzednich przykładach są ograniczenia kolumna.Ograniczenie tabela jest zadeklarowany jako niezależnie od definicji kolumn i mogą być stosowane do więcej niż jedną kolumna w tabela.Ograniczenia tabela należy zastosować więcej niż jednej kolumna muszą zostać włączone ograniczenie.

Na przykład jeśli tabela ma dwie lub więcej kolumn klucz podstawowy, należy użyć ograniczenia tabeli dołączyć obu kolumn w kluczu podstawowym.Należy wziąć pod uwagę tabela, która rejestruje zdarzenia występujące w komputerze w fabryce.Załóżmy, że zdarzeń z wielu typów może wystąpić w tym samym czasie, ale że żadne dwa zdarzenia występujące w tym samym czasie może być tego samego typu.To może być wymuszone w tabela poprzez włączenie zarówno event_type i event_time kolumna w dwóch kolumn klucz podstawowy, jak pokazano w poniższym przykładzie.

CREATE TABLE factory_process
   (event_type   int,
   event_time   datetime,
   event_site   char(50),
   event_desc   char(1024),
CONSTRAINT event_key PRIMARY KEY (event_type, event_time) )