Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na:SQL Server
Azure SQL Database
SQL databáze v Microsoft Fabric
Přiřazuje pravidlo ke sloupci nebo k datovému typu aliasu.
Důležité
Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají. Používejte unikátní omezení a kontrolujte omezení místo toho. Omezení CHECK se vytvářejí pomocí klíčového slova CHECK v příkazech CREATE TABLE nebo ALTER TABLE .
Syntaxe
sp_bindrule
[ @rulename = ] N'rulename'
, [ @objname = ] N'objname'
[ , [ @futureonly = ] 'futureonly' ]
[ ; ]
Arguments
[ @rulename = ] N'pravidlo'
Název pravidla vytvořeného tímto tvrzením CREATE RULE .
@rulename je nvarchar(776), bez výchozího nastavení.
[ @objname = ] N'objname'
Tabulka a sloupec, nebo alias datový typ, na který má být pravidlo vázáno. @objname je nvarchar(776), bez defaultu.
Pravidlo nelze vázat na text, ntext, image, varchar(max),nvarchar(max),varbinary(max), xml, CLR uživatelsky definovaný typ ani na sloupec časového razítka. Pravidlo nelze vázat na vypočítaný sloupec.
@objname je nvarchar(776) bez defaultu. Pokud je @objname jednočlenné jméno, vyřeší se jako alias datový typ. Pokud je to dvou- nebo třídílný název, nejprve se vyřeší jako tabulka a sloupec; pokud toto rozlišení selže, vyřeší se jako alias datový typ. Ve výchozím nastavení dědí existující sloupce datového typu aliasu @rulename , pokud není pravidlo přímo vázáno na sloupec.
@objname může obsahovat závorkové znaky ([ a ]) jako vymezené identifikační znaky. Další informace naleznete v tématu Identifikátory databáze.
Pravidla vytvořená na výrazech používajících alias datové typy mohou být vázána na sloupce nebo alias datové typy, ale při odkazování se nekompilují. Vyhněte se používání pravidel vytvořených na aliasových datových typech.
[ @futureonly = ] 'FutureOnly'
Používá se pouze při vázání pravidla na alias datový typ.
@futureonly je varchar(15), s výchozím hodnotou NULL. Tento parametr, když je nastaven na futureonly, zabraňuje tomu, aby stávající sloupce datového typu aliasu zdědily nové pravidlo. Pokud je @futureonly , NULLnové pravidlo je vázáno na všechny sloupce datového typu aliasu, které aktuálně nemají pravidlo nebo používají stávající pravidlo datového typu aliasu.
Hodnoty návratového kódu
0 (úspěch) nebo 1 (selhání).
Poznámky
Nové pravidlo můžete navázat na sloupec (i když je preferováno omezení CHECK ) nebo na alias datový typ s bez sp_bindrule odvázání stávajícího pravidla. Staré pravidlo je zrušeno. Pokud je pravidlo vázáno na sloupec s existujícím CHECK omezením, všechna omezení jsou vyhodnocena. Nemůžete navázat pravidlo na datový typ SQL Serveru.
Pravidlo se vynucuje při INSERT pokusu o výrok, nikoli při závaze. Můžete navázat znakové pravidlo na sloupec číselného datového typu, i když taková INSERT operace není platná.
Stávající sloupce datového typu aliasu dědí nové pravidlo, pokud @futureonly není specifikováno jako futureonly. Nové sloupce definované aliasem vždy dědí pravidlo. Pokud však klauzule ALTER COLUMN příkazu ALTER TABLE změní datový typ sloupce na alias datový typ vázaný na pravidlo, pravidlo vázané na datový typ není sloupcem děděno. Pravidlo musí být specificky vázáno na sloupec pomocí sp_bindrule.
Když přiřadíte pravidlo ke sloupci, do tabulky sys.columns se přidají související informace. Když přiřadíte pravidlo k datovému typu aliasu, do tabulky sys.types se přidají související informace.
Povolení
Pro navázání pravidla na sloupec tabulky musíte mít ALTER na tabulce povolení.
CONTROL K navázání pravidla na datový typ aliasu je vyžadováno povolení k datovému typu aliasu, nebo ALTER povolení ke schématu, do kterého typ patří.
Examples
A. Přiřaďte pravidlo ke sloupci
Za předpokladu, že pravidlo pojmenované today je vytvořeno v aktuální databázi pomocí CREATE RULE tohoto příkazu, následující příklad připojí pravidlo ke sloupci HireDate tabulky Employee . Když je řádek přidán k Employee, jsou data pro sloupec HireDate ověřena vůči pravidlu today .
USE master;
GO
EXECUTE sp_bindrule 'today', 'HumanResources.Employee.HireDate';
B. Přiřaďte pravidlo k datovému typu aliasu
Za předpokladu existence pravidla pojmenovaného rule_ssn a aliasu datového typu , ssnnásledující příklad se váže rule_ssn na ssn. Ve CREATE TABLE výroku zdědí sloupce typu ssn toto pravidlo rule_ssn . Existující sloupce typu ssn také dědí pravidlorule_ssn, pokud není pro @futureonlyssn specifikováno futureonly nebo nemá pravidlo přímo navázané na něj. Pravidla vázaná na sloupce mají vždy přednost před výchozími pravidly vázanými na datové typy.
USE master;
GO
EXECUTE sp_bindrule 'rule_ssn', 'ssn';
C. Použijte futureonly tuto možnost
Následující příklad váže rule_ssn pravidlo na alias datový typ ssn. Protože futureonly je specifikováno, nejsou ovlivněny žádné existující sloupce typu ssn .
USE master;
GO
EXECUTE sp_bindrule rule_ssn, 'ssn', 'futureonly';
D. Používejte vymezené identifikátory
Následující příklad ukazuje použití vymezených identifikátorů v @objname parametru.
USE master;
GO
CREATE TABLE [t.2] (c1 INT);
-- Notice the period as part of the table name.
EXECUTE 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.
Související obsah
- uložené procedury systému (Transact-SQL)
- uložené procedury databázového stroje (Transact-SQL)
- CREATE RULE (Transact-SQL)
- PRAVIDLO O PROPADÁNÍ (Transact-SQL)
- sp_unbindrule (Transact-SQL)