我正在使用Postgresql
和JDBC
,我正试图找出如何创建断言。
我目前有两个关系表A(url varchar(30))
和表B(url varchar(30))
,我想写一个断言,这样如果表A中已经存在该元素,就不可能插入表B.我在JDBC中这样做?如果无法使用断言,我将如何制作类似的东西呢?
答案 0 :(得分:1)
我不确定没有拼写错误,也许'JDBM'应该是'JDBC'?
对于MapDB(又名JDBM4),计划实现地图修改侦听器,它将处理类似的情况。 JDBM3中没有这样的功能。
现在我建议不要使用断言并在代码中检查它。
答案 1 :(得分:1)
您想要的实际上是一个负外键约束,它不是直接支持的。您可以使用测试条件的PL / PgSQL BEFORE INSERT OR UPDATE
触发器函数来实现此约束。
请参阅Pg文档中的PL/PgSQL trigger procedures。
您可能需要使用SERIALIZABLE
隔离模式来处理一个事务插入B
而其他事务插入A
的竞赛。您需要在9.1 / 9.2中提供改进的serializable
隔离支持。