sql - 如何在 T-SQL 中删除默认值或类似约束?

标签 sql tsql constraints default

我知道语法:

ALTER TABLE [TheTable] DROP CONSTRAINT [TheDefaultConstraint]

但是当我不知道默认约束的名称时如何删除它? (也就是说,它是在 CREATE TABLE 时自动生成的。)

最佳答案

您可以使用此代码自动执行此操作:

DECLARE @tableName VARCHAR(MAX) = '<MYTABLENAME>'
DECLARE @columnName VARCHAR(MAX) = '<MYCOLUMNAME>'
DECLARE @ConstraintName nvarchar(200)
SELECT @ConstraintName = Name 
FROM SYS.DEFAULT_CONSTRAINTS
WHERE PARENT_OBJECT_ID = OBJECT_ID(@tableName) 
AND PARENT_COLUMN_ID = (
    SELECT column_id FROM sys.columns
    WHERE NAME = @columnName AND object_id = OBJECT_ID(@tableName))
IF @ConstraintName IS NOT NULL
    EXEC('ALTER TABLE '+@tableName+' DROP CONSTRAINT ' + @ConstraintName)

只需替换 <MYTABLENAME><MYCOLUMNNAME>视情况而定。

关于sql - 如何在 T-SQL 中删除默认值或类似约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1123060/

相关文章:

sql - 取消分组效果?

mysql - 在连接中独立地向两个表添加约束

SQL:如何将一替换为二?

c# - 从另一台计算机连接到 SQL Server

c# - 返回 bool 值以在 C# 中处理的 sql 命令

sql-server - 有人可以解释一下 DBCC DROPCLEANBUFFERS 吗?

sql - 如何将此查询转换为 SQL Server 2000 语法

sql - 如何一次删除多个约束(Oracle、SQL)

ios - 使用比例约束会导致不同屏幕尺寸上的故障

sql - ORA-00947 "not enough values"当 UPDATE 返回 BULK COLLECT INTO 用户创建的 TYPE TABLE 时