我有一个新表,其中包含对许多现有表的外键引用。当我第一次创建新表时,我通过以下方式创建了外键:
ALTER TABLE [dbo].[NewTable] WITH CHECK ADD FOREIGN KEY([SectionDatabaseID])
REFERENCES [dbo].[Section] ([SectionDatabaseID])
ALTER TABLE [dbo].[NewTable] WITH CHECK ADD FOREIGN KEY([TermDatabaseID])
REFERENCES [dbo].[Term] ([TermDatabaseID])
上述方式将使用它自己的自动命名约定为外键约束生成名称。
但是,我想删除新表,因为我需要通过从头开始创建它来进行一些重大修改。
显然,如果我只是执行一个 drop 语句,SQL Server 数据库会抱怨说新表有对其他表的外键引用。
我听说过运行以下脚本来确定存在哪些外键,以便我们可以删除它们:
use perls;
SELECT 'ALTER TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME +
'] DROP CONSTRAINT [' + CONSTRAINT_NAME + ']'
FROM information_schema.table_constraints
WHERE CONSTRAINT_TYPE = 'FOREIGN KEY' and TABLE_NAME = 'NewTable'
以上将给出基本上显示我需要运行的更改语句的结果。
我需要更自动化的东西。为什么我必须单独删除每个外键约束,然后只能删除表?
我想以更简单的方式删除表格。它必须比我上面需要做的更容易。