我知道语法:

ALTER TABLE [TheTable] DROP CONSTRAINT [TheDefaultConstraint]

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

推荐答案

如果要手动执行此操作,可以使用Management Studio查找(在表中的"约束" node 下).

要使用SQL执行此操作,请执行以下操作:

  • 如果约束是默认约束,可以使用sys.default_constraints来查找:

    SELECT OBJECT_NAME(parent_object_id) AS TableName, name AS ConstraintName
    FROM sys.default_constraints ORDER BY TableName, ConstraintName
    
  • 如果您也在寻找其他约束(判断、唯一、外键、默认、主键),可以使用sysconstraints:

    SELECT OBJECT_NAME(id) AS TableName, OBJECT_NAME(constid) AS ConstraintName
    FROM sysconstraints ORDER BY TableName, ConstraintName
    

您没有说明正在使用哪个版本的SQL Server.以上工作都是在SQL2005和SQL2008上进行的.

Sql相关问答推荐

limit 1是否提高了唯一值列查询的性能

在SQL中对字符串进行逻辑排序,将数字部分排序为数字值

如何在VB.NET中使用MS SYS根据开始和结束期间日期进行查询

帮助修复查询以识别SQL DW中数据中的递归关系

Select 最大值,但当并列时,从其他列 Select 最大值

Access VBA SQL命令INSERT FOR MULTIME VALUE

违反了完整性约束-值存在时找不到父键

使用左外部联接更正列中第+1行的值时重复

如何在 SNOSQL 中执行反连接(或 where 子句过滤)以查找字段不包含另一个表中的值的行?

如何查询自引用 comments 表以查找带有回复的 comments ,并按最新回复排序?

根据不同日期标准分配组的逻辑

snowflake中的动态文件名生成

SQL 多个不满足的条件失败

PostgreSQL中如何提取以特定字符开头的字符串中的所有单词?

获取记录的上一个值,并将其与当前值一起显示

基于字符串的SQL查询

Postgresql 需要一个查询,为我提供所有没有具有特定状态值的子元素的父母

为数组中的每个元素从表中收集最大整数

如何对 SQL 表中的连续时间戳进行分组?

根据开始/结束标记将 GROUP_ID 分配给行