Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к:SQL Server
Azure SQL Database
SQL база данных в Microsoft Fabric
Привязывает правило к столбцу или к псевдониму типа данных.
Внимание
Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется. Вместо этого используйте уникальные ограничения и проверьте ограничения. Ограничения CHECK создаются с помощью ключевого слова CHECK инструкций CREATE TABLE или ALTER TABLE.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_bindrule
[ @rulename = ] N'rulename'
, [ @objname = ] N'objname'
[ , [ @futureonly = ] 'futureonly' ]
[ ; ]
Аргументы
[ @rulename = ] N'rulename'
Имя правила, созданного инструкцией CREATE RULE .
@rulename — nvarchar(776), без значения по умолчанию.
[ @objname = ] N'objname'
Таблица и столбец или тип данных псевдонима, к которому должно быть привязано правило. @objname — nvarchar(776) без значения по умолчанию.
Правило не может быть привязано к тексту, ntext, image, varchar(max),nvarchar(max), varbinary(max), xml, clR определяемого пользователем типу или столбцу метки времени. Правило не может быть привязано к вычисляемого столбцу.
@objname — nvarchar(776) без значения по умолчанию. Если @objname является именем одной части, он разрешается в качестве типа данных псевдонима. Если это двух- или трехкомпонентное имя, он сначала разрешается в виде таблицы и столбца; Если это разрешение завершается ошибкой, он разрешается как тип данных псевдонима. По умолчанию существующие столбцы типа данных псевдонима наследуются @rulename , если правило не привязано непосредственно к столбцу.
@objname могут содержать символы скобки ([и]) в виде символов идентификатора с разделителями. Дополнительные сведения см. в разделе "Идентификаторы базы данных".
Правила, созданные на выражениях, использующих типы данных псевдонимов, могут быть привязаны к столбцам или типам данных псевдонимов, но не компилируются при их ссылке. Избегайте использования правил, созданных на основе псевдонима типов данных.
[ @futureonly = ] «только будущее»
Используется только при привязке правила к типу данных псевдонима.
@futureonly — varchar(15) с значением по умолчаниюNULL. Этот параметр, если задано futureonlyзначение, запрещает существующим столбцам типа данных псевдонима наследовать новое правило. Если @futureonly , NULLновое правило привязано к любым столбцам типа данных псевдонима, которые в настоящее время не имеют правила или используют существующее правило типа данных псевдонима.
Значения кода возврата
0 (успешно) или 1 (сбой).
Замечания
Можно привязать новое правило к столбцу (хотя CHECK использование ограничения предпочтительнее) или к типу данных псевдонима без sp_bindrule отмены привязки существующего правила. Старое правило замещается. Если правило привязано к столбцу с существующим CHECK ограничением, оцениваются все ограничения. Правило нельзя привязать к типу данных SQL Server.
Правило применяется при INSERT попытке инструкции, а не при привязке. Правило символов можно привязать к столбцу числового типа данных, хотя такая INSERT операция недопустима.
Существующие столбцы типа данных псевдонима наследуют новое правило, если @futureonly не указано как futureonly. Новые столбцы, определяемые как столбцы с типом данных псевдонима, всегда наследуют новое правило. Однако если ALTER COLUMN предложение инструкции ALTER TABLE изменяет тип данных столбца на тип данных псевдонима, привязанный к правилу, правило, привязанное к типу данных, не наследуется столбцом. Правило должно быть специально привязано к столбцу с помощью sp_bindrule.
При привязке правила к столбцу связанные сведения добавляются в таблицу sys.columns . При привязке правила к типу данных псевдонима в таблицу добавляются sys.types связанные сведения.
Разрешения
Чтобы привязать правило к столбцу таблицы, необходимо иметь ALTER разрешение на таблицу.
CONTROL Разрешение на тип данных псевдонима или ALTER разрешение на схему, к которой принадлежит тип, требуется для привязки правила к типу данных псевдонима.
Примеры
А. Привязка правила к столбцу
Предположим, что в today текущей базе данных создается правило с помощью CREATE RULE инструкции, следующий пример привязывает правило к HireDate столбцу Employee таблицы. При добавлении строки в Employee данные для столбца HireDate проверяются на соответствие правилу today.
USE master;
GO
EXECUTE sp_bindrule 'today', 'HumanResources.Employee.HireDate';
B. Привязка правила к типу данных псевдонима
Предполагая существование правила с именем rule_ssn и типа данных псевдонима с именем ssn, следующий пример привязывает rule_ssn к ssn.
CREATE TABLE В инструкции столбцы типа ssn наследуют rule_ssn правило. Существующие столбцы типа ssn также наследуют rule_ssn правило, если в будущем не указано для @futureonly или ssn имеет правило, привязанное непосредственно к нему. Правила, привязанные к столбцам, всегда имеют приоритет над значениями по умолчанию, привязанными к типам данных.
USE master;
GO
EXECUTE sp_bindrule 'rule_ssn', 'ssn';
В. Использование параметра futureonly
На следующем примере показано, как привязать правило rule_ssn к типу данных псевдонима ssn. Так как указан futureonly, никакие существующие столбцы типа ssn не затрагиваются.
USE master;
GO
EXECUTE sp_bindrule rule_ssn, 'ssn', 'futureonly';
D. Использование идентификаторов с разделителями
В следующем примере показано использование идентификаторов с разделителями в параметре @objname .
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.