0

我正在使用Postgresql并且JDBC我试图弄清楚如何创建一个断言。

我目前有两个关系表A(url varchar(30))和表B(url varchar(30)),我想编写一个断言,以便如果表 A 中已经存在该元素,则无法插入表 B。如何在 JDBC 中执行此操作?如果无法使用断言,我将如何让类似的事情发生?

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

4

2 回答 2

1

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

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

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

于 2012-12-03T01:39:27.747 回答
1

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

请参阅Pg 文档中的PL/PgSQL 触发器过程

您可能需要使用SERIALIZABLE隔离模式来处理一个事务插入B而另一个事务插入A. 您将需要serializable9.1/9.2 中改进的隔离支持。

于 2012-12-03T04:16:22.570 回答