DROP DEFAULT (Transact-SQL)

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

重要说明重要提示

MicrosoftSQL Server 的下一版本中将删除 DROP DEFAULT。请不要在新的开发工作中使用 DROP DEFAULT,并准备修改当前使用它的应用程序。请改用使用 ALTER TABLECREATE TABLE 的 DEFAULT 关键字创建的默认定义。有关详细信息,请参阅 创建和修改 DEFAULT 定义

主题链接图标Transact-SQL 语法约定

语法

DROP DEFAULT { [ schema_name . ] default_name } [ ,...n ] [ ; ]

参数

  • schema_name
    默认值所属架构的名称。

  • default_name
    现有默认值的名称。若要查看现有默认值的列表,请执行 sp_help。默认值必须符合标识符规则。可以选择是否指定默认架构名称。

注释

删除默认值之前,如果默认值当前绑定到列或别名数据类型,请通过执行 sp_unbindefault 解除默认值的绑定。

从允许空值的列中删除默认值后,当添加行且没有显式提供值时,将在该位置插入 NULL。从 NOT NULL 列中删除默认值后,当添加行且没有显式提供值时,将返回错误消息。这些行以后作为典型 INSERT 语句行为的一部分添加。

权限

若要执行 DROP DEFAULT,用户至少应对默认值所属的架构具有 ALTER 权限。

示例

A. 删除默认值

如果默认值没有绑定到列或别名数据类型,只需使用 DROP DEFAULT 即可将其删除。以下示例删除用户创建的名为 datedflt 的默认值。

USE AdventureWorks;
GO
IF EXISTS (SELECT name FROM sys.objects
         WHERE name = 'datedflt' 
            AND type = 'D')
   DROP DEFAULT datedflt
GO

B. 删除绑定到列的默认值

以下示例取消与 Employee 表的 EmergencyContactPhone 列关联的默认值的绑定,然后删除名为 phonedflt 的默认值。

USE AdventureWorks;
GO
IF EXISTS (SELECT name FROM sys.objects
         WHERE name = 'phonedflt' 
            AND type = 'D')
   BEGIN 
      EXEC sp_unbindefault 'Person.Contact.Phone'
      DROP DEFAULT phonedflt
   END
GO