从当前数据库中删除一个或多个用户定义的默认值。
DROP DEFAULT 语句不适用于 DEFAULT 约束。有关除去 DEFAULT 约束(通过使用 CREATE TABLE 或 ALTER TABLE 语句的 DEFAULT 选项所创建)的更多信息,请参见本卷中的"ALTER TABLE"。
DROP DEFAULT { default } [ ,...n ]
default
是现有默认值的名称。若要查看现有默认值的列表,请执行 sp_help。默认值必须符合标识符规则。有关更多信息,请参见使用标识符。可以选择是否指定默认值所有者名称。
n
是表示可以指定多个默认值的占位符。
除去默认之前,通过执行 sp_unbindefault 解除绑定默认值(如果默认值当前绑定到列或用户定义的数据类型)。
从允许空值的列中除去默认值后,当添加行且没有显式提供值时,将在那个位置插入 NULL。从 NOT NULL 列中除去默认值后,当添加行且没有显式提供值时,将返回错误信息。这些行以后作为标准 INSERT 语句行为的一部分添加。
默认情况下,将 DROP DEFAULT 权限授予默认值所有者,该权限不可转让。然而,db_owner 和 db_ddladmin 固定数据库角色成员以及 sysadmin 固定服务器角色成员可以通过在 DROP DEFAULT 中指定所有者除去任何默认对象。
如果默认值没有绑定到列或用户定义的数据类型,可以很容易地使用 DROP DEFAULT 将其除去。下例删除用户创建的名为 datedflt 的默认值。
USE pubs
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'datedflt'
AND type = 'D')
DROP DEFAULT datedflt
GO
下例解除绑定与 authors 表的 phone 列关联的默认值,然后除去名为 phonedflt 的默认值。
USE pubs相关文章
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'phonedflt'
AND type = 'D')
BEGIN
EXEC sp_unbindefault 'authors.phone'
DROP DEFAULT phonedflt
END
GO