【发布时间】:2021-07-08 18:31:34
【问题描述】:
所以我的情况是:
我有 2 张桌子:
- TABLE_A
- TABLE_B
- TABLE_A 有一个 ID 作为主键作为身份
- TABLE_B 有一个 ID 作为身份,a_ID 作为外键引用来自 TABLE_A 的 ID
我将 oci_execute 与 OCI_NO_AUTO_COMMIT 一起使用,因此如果稍后插入失败,则插入根本不会发生。如果每一次都成功运行,我会在最后提交;
问题
我在 TABLE_A 上运行了一个插入,它返回我想在之后使用的插入行 ID。 但由于它尚未提交,我收到外键违规错误。
可能的解决方案
- 我曾想过编写一个预先编写的 PL/SQL 脚本,但我可能会运行多个插入,因此我最终会替换字符串并连接多个插入字符串,而不是正确绑定变量。
- 我什至想过无论如何都要插入行并在失败时删除,但这听起来很糟糕,我宁愿进行字符串查询操作。
- 也许 TABLE_A 应该有一个没有任何用途的 0 ID,我首先使用它。后来我把它改成了插入的,但这听起来也很糟糕。
有没有其他方法可以做到这一点?
【问题讨论】:
标签: php oracle foreign-keys constraints