2012-12-02 79 views
0

我正在使用PostgresqlJDBC,我试图找出如何创建一个断言。如何在JDBC中创建断言?

我目前有两个关系表A(url varchar(30))和表B(url varchar(30))和我想写一个断言,这样就不可能插入到表B中,如果该表中已经存在该元素。我怎么在JDBC中做到这一点?如果不能使用断言,我会如何做出类似的事情?

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

回答

1

你想要的是有效的负外键约束,它不直接支持。您可以使用测试条件的PL/PgSQL BEFORE INSERT OR UPDATE触发器函数来实现此约束。

请参阅PL/PgSQL trigger procedures在Pg文档中。

您可能需要使用SERIALIZABLE隔离模式来处理其中一个事务插入到B而另一个插入到A中的竞争。 9.1/9.2中需要改进的隔离支持serializable

1

我不确定是否有错字,也许'JDBM'应该是'JDBC'?

对于MapDB(又名JDBM4),计划实现地图修改侦听器,它将处理类似的情况。在JDBM3中没有这样的功能。

现在我会建议不要使用断言并在代码中检查它。

+0

谢谢。这应该是JDBC – Nosrettap