【发布时间】:2012-04-27 16:35:29
【问题描述】:
我想更改列的数据类型。
因为该列被其他 2 个表作为外键引用,所以我需要删除其他 2 个表的外键约束。
当前表也有需要删除的索引。
如何做到这一点?
【问题讨论】:
标签: sql-server sql-server-2008 constraints indexing
我想更改列的数据类型。
因为该列被其他 2 个表作为外键引用,所以我需要删除其他 2 个表的外键约束。
当前表也有需要删除的索引。
如何做到这一点?
【问题讨论】:
标签: sql-server sql-server-2008 constraints indexing
您需要知道可以从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]')
【讨论】: