在当前数据库中为列或者用户定义数据类型解除(删除)默认值绑定。
sp_unbindefault [@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_flag 为 futureonly 时,现有的属于该数据类型的列不会失去指定默认值。
0(成功)或 1(失败)
若要显示默认值的文本,请以该默认值的名称为参数执行存储过程 sp_helptext。
解除默认值绑定时,如果默认值绑定到列,则绑定信息从表 syscolumns 中删除。如果默认值绑定到用户定义数据类型,则绑定信息从表 systypes 中删除。
只有 sysadmin 固定服务器角色、db_owner 和 db_ddladmin 固定数据库角色的成员以及表所有者才能执行 sp_unbindefault。
下例为表 employees 的 hiredate 列解除默认值绑定。
EXEC sp_unbindefault 'employees.hiredate'
下例为用户定义数据类型 ssn 解除默认值绑定。这将为该数据类型的现有列和将来的列解除绑定。
EXEC sp_unbindefault 'ssn'
下例为用户定义数据类型 ssn 解除默认值绑定,现有的 ssn 列不受影响。
EXEC sp_unbindefault 'ssn', 'futureonly'
此示例显示了在 object_name 中分隔标识符的使用。
CREATE TABLE [t.3] (c1 int) -- Notice the period as part of the table
-- name.
CREATE DEFAULT default2 AS 0
GO
EXEC sp_bindefault 'default2', '[t.3].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.
EXEC sp_unbindefault '[t.3].c1'