このような CHECK 制約は、デフォルト エンジンでは作成できません。HSQLDB 1.8 ドキュメントから:
ALTER TABLE <テーブル名> ADD [CONSTRAINT <制約名>] CHECK (<検索条件>);
テーブルにチェック制約を追加します。現在のバージョンでは、チェック制約は挿入または更新される行のみを参照できます。
これは、TestSelfCheckConstraints.txtの次のようなコマンドでエラーが発生することを意味します。
/*e*/CREATE TABLE TC6(A CHAR, B CHAR, C CHAR, D INT, CHECK(A IN (SELECT A FROM TC5)));
したがって、このようなチェックを実行するには、クエリを使用して事前に (または後で) 検証する必要があります。これは、[イベント] タブにマクロを追加することで、フォームに対して行うことができます。アイデアについては、 https ://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=21414 の投稿を参照してください。
デフォルトのエンジンはかなり古いため、このような複雑な要件については、別のデータベース エンジンを使用するように LibreOffice Base を設定する方がよい場合があります。たとえば、MySQL を使用すると、ストアド プロシージャ トリガーを設定して、この種のチェックを行うことができます。MySQL の CHECK 制約が機能しないを参照してください。