DROP DEFAULT (Transact-SQL)

适用于:SQL ServerAzure SQL 托管实例

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

重要

DROP DEFAULT将在下一版本的 Microsoft SQL Server 中被移除。 不要在新的开发工作中使用 DROP DEFAULT ,并计划修改当前使用这些应用的应用程序。 相反,使用你可以通过关键词 或 ALTER TABLECREATE TABLE创建DEFAULT的默认定义。

Transact-SQL 语法约定

语法

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

参数

IF EXISTS
适用范围:SQL Server(SQL Server 2016 (13.x) 到当前版本)。

只有在默认值已存在时才对其进行有条件地删除。

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

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

备注

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

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

权限

执行 DROP DEFAULT至少,用户必须对默认模式所属的模式拥有 ALTER 权限。

示例

A. 删除默认值

如果默认值没有绑定到某一列或别名数据类型,可以使用 直接丢弃 DROP DEFAULT。 以下示例删除用户创建的名为 datedflt 的默认值。

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

从 SQL Server 2016 (13.x) 开始,可以使用以下语法。

DROP DEFAULT IF EXISTS datedflt;  
GO  

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

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

USE AdventureWorks2022;  
GO  
   BEGIN   
      EXEC sp_unbindefault 'Person.Contact.Phone'  
      DROP DEFAULT phonedflt  
   END;  
GO  

另请参阅

CREATE DEFAULT (Transact-SQL)
sp_helptext(Transact-SQL)
sp_help(Transact-SQL)
sp_unbindefault(Transact-SQL)