我想更改列的数据类型。
因为该列被引用为具有2个其他表的外键,所以我需要在其他2个表上删除外键约束。
此外,当前表还有需要删除的索引。
如何做到这一点?
答案 0 :(得分:0)
您需要知道索引和外键名称,这些名称可以从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]')