現在、アプリケーションのテスト環境をセットアップしています。テスト環境でjUnitとSpringを使用しています。テストを実行する前に、データベースのテスト環境の状態を設定したいと思います。私はすでにSQLスクリプト(スキーマとデータ)を作成しており、それらはOraclesSQLDeveloperで正常に実行されます。oracle thin jdbcドライバーを使用して実行しようとしたところ、実行に失敗しました。シンドライバーはトリガーステートメントの作成を好まないようです。
シンドライバーの代わりにociドライバーを使用する必要があることを読みました。ociドライバーの問題は、プラットフォームに依存せず、セットアップに時間がかかることです。
私のコードの例:
CREATE TABLE "USER"
(
USER_ID NUMBER(10) NOT NULL,
CREATOR_USER_FK NUMBER(10) NOT NULL,
...
PRIMARY KEY (USER_ID)
);
CREATE SEQUENCE SEQ_USER START WITH 1 INCREMENT BY 1;
CREATE TRIGGER "USER_ID_SEQ_INC" BEFORE
INSERT ON "USER" FOR EACH ROW BEGIN
SELECT SEQ_USER.nextval
INTO :new.USER_ID
FROM DUAL;
END;
トリガーステートメントを実行すると実行は失敗しますが、クエリの最初の部分(CREATE TRIGGER "USER_ID_SEQ_INC" ... "USER" ... BEGIN ... FROM DUAL;)は正常に実行されたように見えますが、使用しようとするとトリガーが壊れているようです。実行失敗エラーは、ステートメントENDの2番目の部分にあります。「ORA-00900:無効なSQLステートメント」。
誰かがその問題の解決策を知っていますか?プラットフォームに依存しないシンjdbcドライバーでトリガーを作成したいだけです。
乾杯!
ケビン