0

私はPostgresqlandを使用しておりJDBC、アサーションを作成する方法を理解しようとしています。

現在、2 つのリレーション テーブル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 トリガー プロシージャを参照してください。

1 つのトランザクションが に挿入され、もうSERIALIZABLE1 つのトランザクションが に挿入される競合を処理するには、おそらく分離モードを使用する必要があります。9.1/9.2 で改善された分離サポートが必要になります。BAserializable

于 2012-12-03T04:16:22.570 に答える