0

我想更改列的数据类型。

因为该列与其他 2 个表作为外键引用,所以我需要删除其他 2 个表的外键约束。

当前表也有需要删除的索引。

如何才能做到这一点?

4

1 回答 1

1

您需要知道可以从sys表中提取的索引和外键名称。删除它们的语法是:

外键

IF  EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[foreign_key_index_name]') AND parent_object_id = OBJECT_ID(N'[dbo].[tablename]'))
ALTER TABLE [dbo].[tablename] DROP CONSTRAINT [foreign_key_index_name]

指数

IF  EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[tablename]') AND name = N'index_name')
DROP INDEX [index_name] ON [dbo].[tablename] WITH ( ONLINE = OFF )

此信息也可在 BOL 中获得。

您可以使用以下查询找到索引和外键名称:

select * from sys.indexes where object_id = object_id(N'[dbo].[tablename]')
select * from sys.foreign_keys where parent_object_id = object_id(N'[dbo].[tablename]')
于 2012-04-27T17:58:13.037 回答