Udostępnij za pośrednictwem


sp_bindrule (języka Transact-SQL)

Reguła jest powiązana kolumna lub typ danych alias .

Ważna informacjaWażne:

Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Nie należy stosować tej funkcji w nowych projektach oraz jak najszybciej należy zmodyfikować aplikacje, w których obecnie jest używana ta funkcja.Użycie ograniczeń CHECK zamiast.Sprawdź ograniczenia są tworzone przy użyciu słowa kluczowego wyboru z CREATE TABLE lub ALTER TABLE instrukcji.

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

Składnia

sp_bindrule [ @rulename = ] 'rule' , 
     [ @objname = ] 'object_name' 
     [ , [ @futureonly = ] 'futureonly_flag' ] 

Argumenty

  • [ @rulename=] 'rule'
    Jest to nazwa reguły utworzone przez reguły tworzenia instrukcja.rulejest nvarchar(776), z braku domyślne.

  • [ @objname=] 'object_name'
    Jest tabela i kolumnalub alias typu danych, do którego reguła jest związane.A rule cannot be bound to a text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, zdefiniowany przez użytkownika typ CLR, or timestamp kolumna.Reguła nie może być powiązane kolumnaobliczanej.

    object_namejest nvarchar(776)z nie domyślnych.Jeśli object_name jest nazwą jednej części jest rozwiązywana jako alias danych typu.Jest nazwą dwóch lub trzech części, najpierw jest rozpoznawana jako tabela i kolumna; Jeśli to rozwiązanie nie powiedzie się, jest rozpoznawane jako typ danych alias .Domyślnie dziedziczą istniejących kolumn typu danych alias rule , chyba że reguły zostało związane bezpośrednio z kolumna.

    Ostrzeżenie

    object_namemoże zawierać nawiasów i [] znaków jako identyfikator z ogranicznikami znaków.Aby uzyskać więcej informacji, zobacz Identyfikatory rozdzielanego (aparat bazy danych).

    Ostrzeżenie

    Reguły utworzone na wyrażenia alias typów danych może być związana z kolumn lub alias typów danych, ale nie można skompilować przy one odwołuje się do.Należy unikać używania reguły utworzone na typy danych alias .

  • [ @futureonly= ] 'futureonly_flag'
    Jest używane tylko podczas powiązanie wpisz regułę do danych alias .future_only_flagjest varchar(15) Domyślna wartość NULL.Ten parametr podczas zestaw na futureonly uniemożliwia dziedziczenie nową regułę istniejących kolumn typu danych alias .Jeśli futureonly_flag ma wartość NULL, Nowa reguła jest związany z kolumn typu danych alias mają obecnie żadna reguła lub że korzystanie z istniejącej reguły typu danych alias .

Wartości kodów powrotnych

0 (sukces) lub 1 (błąd)

Uwagi

Nowa reguła w kolumna można powiązać (chociaż preferowane jest używanie ograniczenie typu CHECK) lub do typu danych alias z sp_bindrule bez Rozpinanie istniejącej reguły.Stare reguły jest wyłączona.Reguła jest związany z kolumna z istniejących ograniczenie typu CHECK, oceniane są wszystkie ograniczenia.Nie można powiązać regułę SQL Server typu danych.

Reguła jest wymuszane w przypadku INSERT instrukcja zostanie podjęta próba nie na powiązanie.Reguła znaków można powiązać kolumna numeric Typ danych, chociaż operację WSTAWIANIA nie jest prawidłowy.

Istniejących kolumn typu danych alias dziedziczą nową regułę, chyba że futureonly_flag jest określony jako futureonly.Nowe kolumny zdefiniowane przy użyciu typu danych alias zawsze dziedziczą reguły.Jednakże instrukcji ALTER COLUMN klauzula ALTER TABLE instrukcja zmienia typ danych kolumna typ danych alias , powiązane z reguły, nie dziedziczy reguły związane z typem danych według kolumna.Reguła musi wyraźnie powiązane z kolumna przy użyciu sp_bindrule.

Powiązać reguła w kolumnainformacje pokrewne jest dodawany do sys.columns tabela.Reguły jest powiązana z typem danych alias , informacje pokrewne jest dodawany do sys.types tabela.

Uprawnienia

Aby powiązać regułykolumna tabela, trzeba mieć uprawnienie ALTER w tabela. Uprawnienie Kontrola typu danych alias lub uprawnienie do zmiany schematu, do której należy typ, wymagane do powiązania reguły typu danych alias .

Przykłady

A.Powiązanie z reguły do kolumna

Zakładając, że reguła o nazwie today został utworzony w bieżącej bazie danych przy użyciu reguły tworzenia instrukcjaponiższy przykład wiąże się z reguły do HireDate kolumna Employee tabela.Gdy dodawany jest wiersz do Employee, dane dla HireDate kolumna jest sprawdzany na podstawie today reguły.

USE master;
GO
EXEC sp_bindrule 'today', 'HumanResources.Employee.HireDate'

B.Powiązanie regułę do typu danych alias

Przy założeniu, że istnienie regułę o nazwie rule_ssn i typem danych alias o nazwie ssn, w następującym przykładzie przedstawiono powiązanie rule_ssn do ssn.W tabeli utworzyć instrukcja, kolumn typu ssn dziedziczą rule_ssn reguły.Istniejących kolumn typu ssn dziedziczą również rule_ssn reguły, chyba że futureonly określonych dla futureonly_flag, lub ssn ma reguła związana bezpośrednio do niejReguły związane z kolumn zawsze mają pierwszeństwo przed ustawieniami te powiązane z typami danych.

USE master;
GO
EXEC sp_bindrule 'rule_ssn', 'ssn'

C.Przy użyciu futureonly_flag

Poniższy przykład wiąże rule_ssn regułę do typu danych alias ssn.Ponieważ futureonly jest określony nie istniejących kolumn typu ssn , których dotyczy problem.

USE master;
GO
EXEC sp_bindrule rule_ssn, 'ssn', 'futureonly'

D.Używane identyfikatory rozdzielanego

W poniższym przykładzie pokazano użycie rozdzielanego identyfikatorów object_name parametru.

USE master;
GO
CREATE TABLE [t.2] (c1 int) 
-- Notice the period as part of the table name.
EXEC sp_bindrule rule1, '[t.2].c1' 
-- The object contains two periods; 
-- the first is part of the table name 
-- and the second distinguishes the table name from the column name.