如何在 Microsoft SQL 服务器中使用值删除列?

How can I DROP COLUMN in Microsoft SQL Server with a value?

代码:

ALTER TABLE tblUser
DROP COLUMN Mobile

错误:

ALTER TABLE DROP COLUMN Mobile failed because one or more objects access this column.

此列的值在 Table 中。如何删除访问此列的所有对象?

如何 DROP COLUMN 使用值?

如何用代码做到这一点?如何自动删除列中的所有约束?

SQL Search 是一个很棒的工具。我将搜索您所有使用目标对象的对象。

您可以轻松找到使用您的列的位置,然后您也可以简单地修改或删除该对象。

您需要知道这些约束是什么以及它们的名称是什么才能删除它们; SQL 服务器中没有任何内容可以说 DROP ALL CONSTRAINTS 并照做。 – marc_s 昨天

使用下面的查询来查找特定表名的约束名称

  SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'TABLENAME'

您可以在 constraint_name 列下看到约束名称,使用以下语法删除所有约束

  ALTER TABLE TABLENAME DROP CONSTRAINT CONSTRATINTSNAME 

之后你可以使用下面的语句删除列

ALTER TABLE TABLENAME DROP COLUMN COLUMNNAME
ALTER TABLE DROP COLUMN Mobile failed because one or more objects access this column.

您的专栏不会被删除。因为一列或多列正在从要删除的该列中获取引用。

因此,首先,您必须找到 table 您的列被以下查询引用。

SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'TABLENAME'

它将显示您当前数据库的所有 table 的所有约束。您需要找到它并删除约束。之后您的列将被成功删除,因为在任何 table.

中都没有引用您的列

要从列中删除约束 - 使用下面的查询

alter table tablename
drop constraint constraintid