如何在JDBC中创建断言?

时间:2012-12-02 21:13:18

标签: java sql database postgresql

我正在使用PostgresqlJDBC,我正试图找出如何创建断言。

我目前有两个关系表A(url varchar(30))和表B(url varchar(30)),我想写一个断言,这样如果表A中已经存在该元素,就不可能插入表B.我在JDBC中这样做?如果无法使用断言,我将如何制作类似的东西呢?

编辑:好的,所以我读过使用postgresql创建断言是不可能的;因此,我现在的问题是,如何使用Postgresql和JDBC的约束来做类似的事情?

2 个答案:

答案 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隔离支持。