Transact-SQL 参考

DROP DEFAULT

从当前数据库中删除一个或多个用户定义的默认值。

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 中指定所有者除去任何默认对象。

示例
A. 除去默认值

如果默认值没有绑定到列或用户定义的数据类型,可以很容易地使用 DROP DEFAULT 将其除去。下例删除用户创建的名为 datedflt 的默认值。

USE pubs
IF EXISTS (SELECT name FROM sysobjects
         WHERE name = 'datedflt' 
            AND type = 'D')
   DROP DEFAULT datedflt
GO
B. 除去绑定到列的默认值

下例解除绑定与 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

请参见

CREATE DEFAULT

sp_helptext

sp_help

sp_unbindefault