Udostępnij za pośrednictwem


sp_bindrule (języka Transact-SQL)

Regułę, która jest powiązana kolumna lub do typu danych alias.

Important noteImportant Note:

This feature will be removed in a future version of Microsoft SQL Server. Do not use this feature in new development work, and modify applications that currently use this feature as soon as possible. Użycie Ograniczenia CHECK zamiast niego.Sprawdź ograniczenia są tworzone przy użyciu słowa kluczowego wyboru z TWORZENIE tabela or ALTER tabela instrukcji.

Topic link iconKonwencje składni języka Transact-SQL

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

Argumenty

  • [ @rulename=] 'rule'
    Is the name of a rule created by the CREATE RULE statement.rule is nvarchar(776), with no default.

  • [ @objname=] 'object_name'
    Czy tabela i kolumna lub typ danych alias, na którym reguła jest związany.Reguły nie może być powiązane text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xmlŚrodowisko zdefiniowany przez użytkownika typ danych CLR, lub timestamp Kolumna. Reguły nie można powiązać z kolumna obliczana.

    object_name jest nvarchar(776) z Brak domyślnej. Jeśli object_name jest to nazwa jednej części jest rozpoznany jako typ danych alias. Jeżeli jest to nazwa dwóch lub trzech części, jest najpierw rozpoznawana jako tabela i kolumna; jeśli to rozwiązanie nie powiedzie się, jest rozpoznany jako typ danych alias.Domyślnie dziedziczą istniejących kolumn typu danych alias rule Jeśli reguła nie ma już powiązany bezpośrednio do kolumna.

    Uwaga

    object_name can contain the bracket [ and ] characters as delimited identifier characters.Aby uzyskać więcej informacji zobaczIdentyfikatory rozdzielanego (aparat bazy danych).

    Uwaga

    Reguły utworzone na wyrażenia korzystające z typami danych alias może być związany z kolumn lub typów danych aliasu, ale nie można skompilować, gdy odwołuje się.Należy unikać stosowania reguły utworzone na typy danych alias.

  • [ @futureonly= ] 'futureonly_flag'
    Is used only when binding a rule to an alias data type.future_only_flag is varchar(15) with a default of NULL.Ten parametr w przypadku ustawienia futureonly uniemożliwia istniejących kolumn typu danych alias dziedziczenie nowej reguły.Jeśli futureonly_flag ma wartość NULL, Nowa reguła jest związany z kolumn typu danych alias, jeszcze żadnej reguły lub, którzy nie korzystają z istniejącej reguły typu danych alias.

Wartości kodów powrotnych

0 (sukces) lub 1 (brak)

Remarks

Można powiązać nową regułę do kolumna (chociaż preferowane jest używanie jest związane ograniczenie typu CHECK) lub do alias typu danych z sp_bindrule bez Rozpinanie istniejącej reguły.Stare reguły jest wyłączona.Jeśli reguły jest związany z kolumną, której z istniejących ograniczenie typu CHECK, obliczane są wszystkie ograniczenia.Nie można powiązać regułę SQL Server Typ danych.

Reguła jest wymuszane w przypadku instrukcja INSERT zostanie podjęta próba nie na wiązanie.kolumna można powiązać regułę znaków numeric Typ danych, mimo że taka operacja INSERT nie jest prawidłowy.

Nowa reguła dziedziczą istniejących kolumn typu danych alias, chyba że futureonly_flag jest określony jako futureonly.Nowe kolumny zdefiniowane przy użyciu typu danych alias zawsze dziedziczą reguły.Jednak jeśli klauzula instrukcja ALTER kolumna instrukcja ALTER tabela zmieni typ danych kolumna do typu danych alias powiązane z reguły, reguły, związany z typem danych nie jest dziedziczona przez kolumna.Reguła musi być wyraźnie powiązane kolumna przy użyciu sp_bindrule.

Gdy powiąże się regułę kolumna, dodaje się do informacji pokrewnych sys.kolumnas tabela.Reguły są powiązane z typem danych alias, powiązanych informacji jest dodawany do sys.types tabela.

Uprawnienia

Aby powiązać regułę do kolumna tabela, musisz mieć uprawnienie ALTER w tabela.STEROWANIA uprawnienie do typu danych alias lub ALTER uprawnienia zdefiniowane w schemacie, do której należy typ, wymagane jest powiązanie regułę z typem danych alias.

Przykłady

A.wiązanie z reguły do kolumna

Zakładając, że reguła o nazwie today została utworzona w bieżącej bazie danych za pomocą instrukcja CREATE reguły, w poniższym przykładzie wiąże reguła HireDate Kolumna Employee Tabela. Po dodaniu wiersz do Employee, dane dla HireDate Kolumna jest sprawdzany na podstawie today reguła.

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

B.wiązanie z reguły do typu danych alias

Zakładając, że istnieje reguła o nazwie rule_ssn a typem danych alias o nazwie ssn, w poniższym przykładzie wiąże rule_ssn Aby ssn. W instrukcja CREATE tabela na kolumnach typu ssn dziedziczenie rule_ssn reguła. Istniejących kolumn typu ssn również dziedziczyć rule_ssn zasada, chyba że futureonly określono futureonly_flag, lub ssn mają regułę, związany z nim bezpośrednio. Reguły powiązane kolumny są zawsze pierwszeństwo w stosunku do tych, które są powiązane z typami danych.

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

C.Za pomocą futureonly_flag

W poniższym przykładzie wiąże rule_ssn reguły typu danych alias ssn. Ponieważ futureonly jest określony, brak istniejących kolumn typu ssn problem dotyczy.

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

D.Używane identyfikatory rozdzielanego

W poniższym przykładzie pokazano sposób użycia rozdzielanego identyfikatorów object_name parametr.

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.