sp_unbindefault (Transact-SQL)
适用范围:SQL Server
在当前数据库中为列或者别名数据类型解除(删除)默认值绑定。
重要
在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 建议改用 ALTER TABLE 或 CREATE TABLE 语句中的 DEFAULT 关键字创建默认定义。
语法
sp_unbindefault
[ @objname = ] N'objname'
[ , [ @futureonly = ] 'futureonly' ]
[ ; ]
参数
[ @objname = ] N'objname'
表和列的名称或默认值将从中取消绑定的别名数据类型。 @objname为 nvarchar(776),没有默认值。 SQL Server 尝试先将两部分标识符解析为列名,然后再解析为别名数据类型。
解除别名数据类型的默认值绑定时,也同时解除数据类型相同且具有相同默认值的任何列的默认值绑定。 属于该数据类型并且直接绑定默认值的类将不受影响。
注意
@objname可以包含带分隔符的括号[]
。 有关详细信息,请参阅 数据库标识符。
[ @futureonly = ] 'futureonly'
仅在取消别名数据类型的默认值绑定时使用。 @futureonly为 varchar(15),默认值为 NULL
. 当@futureonly时futureonly
,数据类型的现有列不会丢失指定的默认值。
返回代码值
0
(成功)或 1
(失败)。
注解
若要显示默认值的文本,请使用默认值的名称作为参数执行 sp_helptext
。
权限
若要解除表列的默认值绑定,需要对表具有 ALTER 权限。 若要解除别名数据类型的默认值绑定,需要对该类型具有 CONTROL 权限或对该类型所属架构具有 ALTER 权限。
示例
A. 从列取消绑定默认值
以下示例解除 hiredate
表的 employees
列的默认值绑定。
EXEC sp_unbindefault 'employees.hiredate';
B. 从别名数据类型取消绑定默认值
以下示例解除别名数据类型 ssn
的默认值绑定。 这将为该数据类型的现有列和将来的列解除绑定。
EXEC sp_unbindefault 'ssn';
°C 使用futureonly_flag
以下示例解除将来使用别名数据类型 ssn
时的绑定,而不影响现有 ssn
列。
EXEC sp_unbindefault 'ssn', 'futureonly';
D. 使用带分隔符的标识符
以下示例演示如何在 @objname 参数中使用带分隔符的标识符。 请注意作为表名的一部分的句点。 在 sp_unbindefault
部分中,对象包含两个句点;第一个句点是表名的一部分,第二个句点将表名与列名区分开来。
--
CREATE TABLE [t.3] (c1 INT);
CREATE DEFAULT default2 AS 0;
GO
EXEC sp_bindefault 'default2', '[t.3].c1';
EXEC sp_unbindefault '[t.3].c1';