DROP DEFAULT (Transact-SQL)
适用于: SQL Server Azure SQL 托管实例
从当前数据库中删除一个或多个用户定义的默认值。
重要
Microsoft SQL Server 的下一版本中将删除 DROP DEFAULT。 请不要在新的开发工作中使用 DROP DEFAULT,并准备修改当前使用它的应用程序。 请改用通过使用 ALTER TABLE 或 CREATE TABLE 的 DEFAULT 关键字创建的默认定义。
语法
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)