2010-11-30 9 views
0

特定の条件で新しい行の挿入を制限する必要があります。挿入可能な値が特定の条件と不一致の場合、データベースは例外をスローする必要があります。 まず、CONSTRAINTオブジェクトを使用しようとしましたが、次のエラーが発生しました。 "SQLException:機能がサポートされていません。HSQLDBの特定の条件に挿入を破棄することはできますか?

は(new.simvolがNULL IS) SIGNAL SQL_STATE '45000'

WHEN EACH ROWのための新しい行として新しい を参照valuta ON INSERT BEFOREトリガーのtg_valをCREATE:

は、その後、私はトリガを使用してみました

さらに別のエラーが発生しました:SQLException:予期しないトークン:SIGNAL。

答えて

0

このエラーは、使用されているHSQLDBのバージョンが、このコンテキストでSIGNALステートメントをサポートしていないことを示している可能性があります。 (モーメントRC2で)HSQLDB 2.0.1は、SQLSTATE(として現在ガイドで言及SQL_STATEない)と、これをサポートしています。

CREATE TRIGGER tg_val BEFORE INSERT ON valuta REFERENCING NEW ROW AS new FOR EACH ROW WHEN (new.simvol IS NULL) SIGNAL SQLSTATE '45000' 

それはあなたがしたいことをサブクエリでチェック制約を使用するように試みから明らかですNOT NULL制約よりも複雑なチェック条件を使用してください。この場合、トリガーにBEGIN ... ENDブロックを使用して、異なるテーブル(ターゲットテーブルを含む)からSELECT文を実行して条件を確認します。

関連する問題