首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL DROP TABLE外键约束

SQL DROP TABLE外键约束
EN

Stack Overflow用户
提问于 2009-11-22 01:15:07
回答 16查看 384.7K关注 0票数 173

如果我想像这样删除数据库中的所有表,它会处理外键约束吗?如果不是,我该如何处理它呢?

代码语言:javascript
复制
GO
IF OBJECT_ID('dbo.[Course]','U') IS NOT NULL
    DROP TABLE dbo.[Course]
GO
IF OBJECT_ID('dbo.[Student]','U') IS NOT NULL
    DROP TABLE dbo.[Student]
EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2009-11-22 01:24:51

不,这不会删除您的表,如果确实有外键引用它。

要获取引用您的表的所有外键关系,您可以使用以下SQL (如果您使用的是SQL Server2005或更高版本):

代码语言:javascript
复制
SELECT * 
FROM sys.foreign_keys
WHERE referenced_object_id = object_id('Student')

如果有的话,使用下面的语句,您可以创建SQL语句来实际删除这些FK关系:

代码语言:javascript
复制
SELECT 
    'ALTER TABLE [' +  OBJECT_SCHEMA_NAME(parent_object_id) +
    '].[' + OBJECT_NAME(parent_object_id) + 
    '] DROP CONSTRAINT [' + name + ']'
FROM sys.foreign_keys
WHERE referenced_object_id = object_id('Student')
票数 365
EN

Stack Overflow用户

发布于 2013-09-11 22:23:21

在SQL Server Management Studio2008 (R2)和更高版本中,可以右击

DB -> Tasks ->生成脚本

  • 选择要删除的表。
  • 选择“保存到新查询窗口”。
  • 单击“高级”按钮。
  • 设置脚本删除和创建到脚本删除。

<代码>H111将脚本外键设置为真。<代码>H212<代码>H113单击“确定”。<代码>H214<代码>H115单击Next -> Next ->完成。<代码>H216<代码>H117查看脚本,然后执行。<代码>H218<代码>F219

票数 52
EN

Stack Overflow用户

发布于 2009-11-22 01:24:21

如果你先删除“孩子”表,外键也会被删除。如果您首先尝试删除"parent“表,您将得到一个”无法删除对象'a‘,因为它被外键约束引用“。错误。

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1776079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档