对不起奇怪的标题,不知道如何更好地命名Q.所以:
我有3张桌子。 EntityA,EntityB,AB。经典的多对多实现。
是否有可能创建约束,要求总是在A和B之间至少有一个关系。
示例工作流程:
a)插入A,插入B,插入关系,提交; SUCCESS
b)插入A,插入B,提交; FALSE
所以问题是:是否有on commit
触发器?或类似的东西。
答案 0 :(得分:2)
没有ON COMMIT触发器这样的东西。但是,您通常可以使用物化视图模拟ON COMMIT触发器的行为。在你的情况下,你可以
提交时,将进行物化视图刷新。如果物化视图上的约束失败,则提交失败。
答案 1 :(得分:0)
您可以在AB上设置延迟约束,这将仅在提交时检查值的有效性。 您可以在EntityA和EntityB表中设置AB表的PK以进行引用,反之亦然(取决于设置延迟约束)。 假设这个插入在同一个事务中,如果没有有效的条目进入AB表,你可以推出更改。