【问题标题】:How to delete a column which is the primary key in SQL Server如何删除 SQL Server 中的主键列
【发布时间】:2018-05-06 14:36:15
【问题描述】:

我在尝试从表中删除主键列时遇到错误。

  • id - 主键列
  • OLTMS_0B8DF2

查询

ALTER TABLE OLTMS_0B8DF2
DROP CONSTRAINT id;   
GO  

错误

消息 3728,第 16 级,状态 1,第 1 行
'id' 不是约束。

消息 3727,第 16 级,状态 0,第 1 行
无法删除约束。查看以前的错误。

【问题讨论】:

  • 您是要删除列还是仅删除约束?
  • 约束应该有一个名字。您可以在 Management Studio 中找到它。
  • 感谢我得到了约束名称。我删除了约束然后我删除了 column.thanks@JohnyL
  • 能否请您提供查询或链接以删除重复行。

标签: sql-server


【解决方案1】:

您需要指定现有的约束名而不是列名来删除约束。

您可以使用 SSMS 对象浏览器或下面的 T-SQL 脚本来确定 PK 约束名称。最佳实践是明确命名约束(例如PK_OLTMS_0B8DF2),而不是依赖自动生成的约束名称。这使得后续的 DDL 更容易。

SELECT name
FROM sys.key_constraints AS pk
WHERE
    pk.parent_object_id = OBJECT_ID(N'OLTMS_0B8DF2')
    AND type = 'PK';

如果您有引用表的外键约束,您也需要同样删除这些约束。

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 1970-01-01
    相关资源
    最近更新 更多