【问题标题】:How to insert into firebird tables with constraint loops?如何插入带有约束循环的火鸟表?
【发布时间】:2015-02-05 01:28:17
【问题描述】:

我在 firebird 中有包含包含循环的表。我还没有找到一种插入数据的好方法,其中 Table A 具有到 Table B 的 FK 并且 Table B 具有到 的 FK >表 A

这不是一个不寻常的数据库问题,但我无法让 firebird 让我插入行。这是我的信念:

  1. firebird 有延迟约束检查的标志,但它似乎 它们没有作为功能实现(真的吗?)。

  2. Firebird 3.0 文档似乎没有提到延迟约束 检查作为功能添加(它会在那里吗?)

  3. 据我所知,您不能在两个表中插入两行 在单个事务中解决问题。 (这是 真的吗?)

  4. 是在插入期间删除所有约束的唯一选项吗? (没那么棒)

【问题讨论】:

  • Firebird 没有延迟触发器。元数据表是从 Interbase 的前身派生的,它是在 - 我相信 - DEC 编写的,其中两个竞争的数据库产品使用相同的元数据结构和 API。要么其他系统确实有延迟触发器,要么这是计划但从未实施的事情。

标签: firebird


【解决方案1】:

我建议使用非必填字段,插入没有 FK 值的 2 行,然后更新它们。

如果要在单个语句中实现,必须可以使用存储过程或“执行块”

最好的问候

【讨论】:

    猜你喜欢
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 2012-07-01
    相关资源
    最近更新 更多