我需要一个DB,我在工作的一些建议。约束双重检查
我有DB,现在我的工作过程,函数和触发器(PL/SQL )。有三个实体,其中两个从第三个实体继承(按照概念数据模型),所以这意味着有两个表引用第三个实体。我必须同时在“父”表和“子”表中插入数据,所以我想过在父表中插入一个过程,而另一个插入到子表中,可以调用前一个。
我的问题是,如果我试图插入到父表中,然后再插入到子表中,并且由于某种原因我将数据插入到不满足约束条件的子表中,会发生什么?换句话说,尽管有这些限制,我还是还有必须验证函数中的输入数据吗?你有什么建议?
是的,有外键约束,但这不是重点,而是剩下的表约束。例如,假设我有这张表,并且它有一定的CHECK约束。如果我在第二个表中插入数据(在第一个表中成功插入数据之后),并由于某种原因抛出异常,因为它违反了约束,数据将记录在第一个表中,而不是第二个表中的数据。这就是我所担心的。 – 2012-02-25 02:02:28
@ user1231958 - 这是事务边界的用途。如果插入到子表中失败并且您不希望插入到父表中,除非两个插入操作都成功,否则如果插入到子表中的过程抛出异常而不是抛出异常,则应用程序将简单地发出回滚发出提交。 – 2012-02-25 02:19:06
我是否必须发出回滚指令,还是自动执行?如果我在一个过程中的一个表中插入一个插入,然后从另一个过程调用它,如何?程序A - >调用程序B - >程序B插入并返回 - >程序A插入。另外还有 – 2012-02-25 02:26:10