如何在 Firebird 2.1 中临时禁用表中的所有约束?
Posted
技术标签:
【中文标题】如何在 Firebird 2.1 中临时禁用表中的所有约束?【英文标题】:How can I temporarily disable all constraints in a Table in Firebird 2.1? 【发布时间】:2010-11-07 00:14:15 【问题描述】:我想禁用所有外键约束并在之后重新启用它们,有什么方法可以做到吗?
我知道 SQLServer 允许这样做,但是 Firebird 呢?
【问题讨论】:
【参考方案1】:在 Firebird 2.1 之前无法禁用 AFAICT 外键。 您必须删除并重新创建它们。 Devshed 上有一个similar thread。
【讨论】:
+1。使用显示系统表的工具,可以看到 RDB$RELATION_CONSTRAINTS 中没有允许禁用外键约束的字段。可以使索引 OTOH 处于非活动状态,并且 RDB$INDICES 有一个字段 RDB$INDEX_INACTIVE。 是的,但是支持约束的索引我不能停用。尝试这样做会导致错误。【参考方案2】:我想唯一的方法是删除它们然后重新创建它们。由于约束不是数据,因此您确实不会丢失数据库中的任何信息,因此这是一个无害的操作(前提是您保留脚本以便以后重新创建它们)。
SVN 存储库中的FlameRobin 版本有一个选项可以为选定的表列依赖项自动生成这些 DROP 和 CREATE 脚本。上一个正式版本对整个表格都有相同的选项,所以这可能会对您有所帮助。但是,没有选择对整个数据库执行此操作。也许其他一些管理员。工具有这个功能。
【讨论】:
以上是关于如何在 Firebird 2.1 中临时禁用表中的所有约束?的主要内容,如果未能解决你的问题,请参考以下文章