Transact-SQL 参考

sp_unbindrule

在当前数据库中为列或用户定义数据类型解除规则绑定。

语法

sp_unbindrule [@objname =] 'object_name'
    [, [@futureonly =] 'futureonly_flag']

参数

[@objname =] 'object_name'

是要解除规则绑定的表和列或者用户定义数据类型的名称。object_name 的数据类型为 nvarchar(776),无默认值。如果参数不是 table.column 的形式,则假定 object_name 为用户定义数据类型。当为用户定义数据类型解除规则绑定时,所有属于该数据类型并具有相同规则的列也同时解除规则绑定。对属于该数据类型的列,如果其规则直接绑定到列上,则该列不受影响。

说明  object_name 中可以含有 [ and ] 字符作为分隔标识符。有关更多信息,请参见分隔标识符

[@futureonly =] 'futureonly_flag'

仅用于解除用户定义数据类型规则的绑定。futureonly_flag 的数据类型为 varchar(15),其默认值为 NULL。当参数 futureonly_flagfutureonly 时,现有的属于该数据类型的列不会失去指定规则。

返回代码值

0(成功)或 1(失败)

注释

若要显示某条规则的文本,请以该规则的名称作为参数来执行存储过程 sp_helptext

解除规则绑定时,如果规则绑定到列,则绑定信息从表 syscolumns 中删除。如果规则绑定到用户定义数据类型,则绑定信息从表 systypes 中删除。

当从用户定义数据类型解除规则绑定时,任何具有该用户定义数据类型的列也同时解除该规则的绑定。对于后来用 ALTER TABLE 语句的 ALTER COLUMN 子句更改了数据类型的列,该规则仍可能绑定在该列上,必须使用存储过程 sp_unbindrule(并指定列名)明确地从这些列中解除规则绑定。

权限

只有 sysadmin 固定服务器角色、db_ownerdb_ddladmin 固定数据库角色的成员以及表所有者才能执行 sp_unbindrule

示例
A. 为列解除规则绑定

下例为表 employeesstartdate 列解除规则绑定。

EXEC sp_unbindrule 'employees.startdate'
B. 为用户定义数据类型解除规则绑定

下例为用户定义数据类型 ssn 解除规则绑定。这将为该数据类型的现有列和将来的列解除规则绑定。

EXEC sp_unbindrule ssn
C. 使用 futureonly_flag

下例为用户定义数据类型 ssn 的解除规则绑定,现有的 ssn 列不受影响。

EXEC sp_unbindrule 'ssn', 'futureonly'
D. 使用分隔标识符

下例显示了在 object_name 中定界标识符的使用。

CREATE TABLE [t.4] (c1 int) -- Notice the period as part of the table 
-- name.
GO
CREATE RULE rule2 AS @value > 100
GO
EXEC sp_bindrule rule2, '[t.4].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.
GO
EXEC sp_unbindrule '[t.4].c1'

请参见

CREATE RULE

DROP RULE

sp_bindrule

sp_helptext

系统存储过程