【问题标题】:How can I temporarily disable all constraints in a Table in Firebird 2.1?如何在 Firebird 2.1 中临时禁用表中的所有约束?
【发布时间】:2010-11-07 00:14:15
【问题描述】:

我想禁用所有外键约束并在之后重新启用它们,有什么方法可以做到吗?

我知道 SQLServer 允许这样做,但是 Firebird 呢?

【问题讨论】:

    标签: sql constraints firebird firebird2.1


    【解决方案1】:

    在 Firebird 2.1 之前无法禁用 AFAICT 外键。
    您必须删除并重新创建它们。
    Devshed 上有一个similar thread

    【讨论】:

    • +1。使用显示系统表的工具,可以看到 RDB$RELATION_CONSTRAINTS 中没有允许禁用外键约束的字段。可以使索引 OTOH 处于非活动状态,并且 RDB$INDICES 有一个字段 RDB$INDEX_INACTIVE。
    • 是的,但是支持约束的索引我不能停用。尝试这样做会导致错误。
    【解决方案2】:

    我想唯一的方法是删除它们然后重新创建它们。由于约束不是数据,因此您确实不会丢失数据库中的任何信息,因此这是一个无害的操作(前提是您保留脚本以便以后重新创建它们)。

    SVN 存储库中的FlameRobin 版本有一个选项可以为选定的表列依赖项自动生成这些 DROP 和 CREATE 脚本。上一个正式版本对整个表格都有相同的选项,所以这可能会对您有所帮助。但是,没有选择对整个数据库执行此操作。也许其他一些管理员。工具有这个功能。

    【讨论】:

      猜你喜欢
      • 2013-03-08
      • 2010-09-12
      • 2014-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多