如何暂时禁用 Firebird 2.1 中表中的所有约束?
我想禁用所有外键约束并在之后重新启用它们,有什么办法可以做到这一点吗?
我知道 SQLServer 允许这样做,但是 Firebird 呢?
I want to disable all Foreign key constraints and re-enable them after, is there some way to do that?
I know that SQLServer allows that, but what about Firebird?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 Firebird 2.1 及以下版本中无法禁用 AFAICT 外键。
您必须删除并重新创建它们。
有一个类似的线程在德夫谢德。
AFAICT foreign keys can't be disabled in Firebird up to 2.1.
You'd have to drop and recreate them.
There's a similar thread on Devshed.
我想唯一的方法是删除它们然后重新创建它们。 由于约束不是数据,因此您实际上不会丢失数据库中的任何信息,因此这是一个无害的操作(前提是您保留脚本以便稍后重新创建它们)。
SVN 存储库中的 FlameRobin 版本可以选择为所选表列依赖项自动生成这些 DROP 和 CREATE 脚本。 上一个正式版本对整个表具有相同的选项,因此这可能会对您有所帮助。 但是,没有选项可以对整个数据库执行此操作。 也许是其他管理员。 工具有这个功能。
I guess the only way is to drop and later re-create them. Since constraints are not data, you really do not lose any information from the database, so it is a harmless operation (provided that you keep the script to recreate them later).
Version of FlameRobin in SVN repository has an option to generate those DROP and CREATE scripts automatically for chosen table column dependencies. Last official release has the same option for entire tables, so that might help you. There is no option to do it for the whole database, though. Maybe some other admin. tool has that feature.