当前位置: 首页 > 面试题库 >

如何从SQL Server数据库中删除所有外键?

冯曾笑
2023-03-14
问题内容

我要删除所有具有以下条件的外键。

SELECT CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE TABLE_NAME IN ('Table1', 'Table2')
  AND CONSTRAINT_NAME LIKE '%FK__%__DL%'

问题答案:

有一个名为的表INFORMATION_SCHEMA.TABLE_CONSTRAINTS,用于存储所有表约束。约束类型FOREIGN KEY也保留在该表中。因此,通过过滤此类型,您可以访问所有外键。

SELECT  *
FROM    INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE   CONSTRAINT_TYPE = 'FOREIGN KEY'

如果创建动态查询(用于-DROP对外键进行更改)以更改表,则可以达到更改所有表的约束的目的。

WHILE(EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE = 'FOREIGN KEY' AND TABLE_NAME IN ('Table1', 'Table2') AND CONSTRAINT_NAME LIKE '%FK__%__DL%'))
BEGIN
    DECLARE @sql_alterTable_fk NVARCHAR(2000)

    SELECT  TOP 1 @sql_alterTable_fk = ('ALTER TABLE ' + TABLE_SCHEMA + '.[' + TABLE_NAME + '] DROP CONSTRAINT [' + CONSTRAINT_NAME + ']')
    FROM    INFORMATION_SCHEMA.TABLE_CONSTRAINTS
    WHERE   CONSTRAINT_TYPE = 'FOREIGN KEY'
            AND TABLE_NAME IN ('Table1', 'Table2')
            AND CONSTRAINT_NAME LIKE '%FK__%__DL%'

    EXEC (@sql_alterTable_fk)
END

EXISTS 函数及其参数可确保至少有一个外键约束。



 类似资料:
  • 我开始使用一个代码,使用Firebase实时数据库。我将它实现到我的解决方案中。连接和控制非常完美,所以我将其用于生产环境。 一段时间后,我在升级,我需要再次删除所有数据-但请稍候,控制台中最高根级别不再有删除按钮,并且一次只允许在一个选定项目中: 上次更新仅显示此消息,没有后续步骤: 只读 问:如何一次删除所有数据?

  • 问题内容: 我需要从数据库中删除除前两个选定日期以外的所有日期: 我想在一个查询中删除除前两个日期以外的所有日期。 问题答案:

  • 问题内容: 我有一个表,表中定义了员工关系。IE 等等… 在高级ID是外键的主键表与refreence列EmpId相同的情况下,我想从该表中清除所有行而不删除任何约束。我怎样才能做到这一点? 需要像这样进行删除4、3、2、1 我怎样才能做到这一点 编辑: Jhonny的答案对我有用,但是哪个答案更有效。 问题答案: 我不知道我是否缺少某些东西,但是也许您可以尝试一下。

  • 问题内容: 如何使用manage.py和命令行从数据库中删除所有表?有什么方法可以执行带有适当参数的manage.py,以便可以从.NET应用程序执行它? 问题答案: 据我所知,没有任何管理命令可以删除所有表。如果你不介意破解Python,则可以编写自己的自定义命令来实现。你可能会发现该选项很有趣。文档说,为给定的应用程序名称打印DROP TABLE SQL语句。 更新:在此答案下方无耻地占用@M

  • 问题内容: 我不想键入所有表的名称以删除所有表。一个查询有可能吗? 问题答案: 使用 INFORMATION_SCHEMA.TABLES 视图获取表列表。在select语句中生成Drop脚本,并使用Dynamic SQL将其删除: 系统表 版本 注意: 如果在表之间定义了任何定义,则首先运行以下查询以 禁用数据库中所有存在的内容。 有关更多信息, 请在此处检查 。

  • 我正在做一个聊天应用程序我想让用户能够删除聊天和消息从firebase数据库下面是我尝试使用一些代码删除消息适配器的代码,当我长时间点击消息,但当我登录到应用程序的消息回来。我使用firebase数据库