使用约束在SQL中删除表

时间:2013-12-09 09:34:13

标签: sql tsql

我正试图在Northwind放一张桌子,我得到了:

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

我正在使用:

use [NorthWind]
go

alter table dbo.Customers
drop column Region

我想这是因为列Region有一个约束。如何找出需要删除的约束?

4 个答案:

答案 0 :(得分:1)

EXEC sp_MSforeachtable @command1="ALTER TABLE ? NOCHECK CONSTRAINT ALL"
GO

OR

ALTER TABLE table_Name NOCHECK CONSTRAINT all

OR

ALTER TABLE table_Name NOCHECK CONSTRAINT constraint_name

然后尝试使用SQL。

如果你真的想放弃约束而不管其他受影响的桌子,请使用它。

如果禁用约束是不够的,则必须删除约束。

答案 1 :(得分:1)

您必须首先删除约束,然后删除该表。如果您有SQL Server Management Studio,则可以选择约束并使用GUI将其删除。或者您可以使用命令行来删除约束

How to remove foreign key constraint in sql server?。取自这个答案

ALTER TABLE <TABLE_NAME> DROP CONSTRAINT <FOREIGN_KEY_NAME>

答案 2 :(得分:0)

如果要在对象资源管理器窗口中通过Sql Server Management Studio,请右键单击要删除的对象,然后单击“查看依赖项”。

答案 3 :(得分:0)

首先,你应该知道ForeignKey - Constraint。在那之后,你必须放弃它。

这样的事情:

-- looking for the Constraint's name related the dbo.Customers table
SELECT Table_Name,Constraint_Name
FROM Information_Schema.CONSTRAINT_TABLE_USAGE
WHERE Table_Name 'Customers'

-- Drop/Delete the founded constraint
ALTER TABLE [dbo].[Customers] DROP CONSTRAINT [FOREIGN_KEY_NAME]

然后,您将运行您的实际脚本。