1

EA ですべてのステートメントをセミコロンで分割し、同時に作成トリガー ステートメントの後にセミコロンを 1 つだけにする方法はありますか?

問題:

主キーを数値 (18,0) として定義し、列プロパティの AutoNum を True に設定することにより、EA 8.0 を使用して Oracle データベースのトリガーを生成しています。 列のプロパティ

次に、「DDL の生成」ダイアログで次のチェックボックスを選択します。 DDL の生成

トリガーに対して EA が生成するのは

CREATE OR REPLACE TRIGGER TRG_Foo_id 
BEFORE INSERT 
ON Foo 
FOR EACH ROW 
BEGIN 
    SELECT SEQ_Foo_id.NEXTVAL 
    INTO :NEW.id 
    FROM DUAL; 
END;;

そのトリガーを PL/SQL Developer に挿入すると、メッセージとともにコンパイル エラーが表示されます。

PLS-00103: シンボル";"が見つかりました

するとき

select * from SYS.USER_ERRORS

「SQL ターミネータ」を指定しない場合、トリガーはエラーなしで作成されますが (create ステートメントは 2 つではなく 1 つのセミコロンで終了するため)、他のすべての create table ステートメントはセミコロンで終了せず、「ORA-00922:ステートメントがセミコロンで区切られていないためです。

生成されるトリガー コードに影響を与える直接的な方法は見つかりませんでした。C、Java などの言語のみが参照 され、データベース コードは参照されません。

4

1 に答える 1

1

このようなトリガーを生成する Enterprise Architect バージョン 9.3.934 で同じ生成を行いました。

CREATE OR REPLACE TRIGGER TRG_Foo_id 
BEFORE INSERT 
ON Foo 
FOR EACH ROW 
BEGIN 
    SELECT SEQ_Foo_id.NEXTVAL 
    INTO :NEW.id 
    FROM DUAL; 
END;
/

古いバージョンのバグのようです

于 2012-07-18T13:23:40.360 に答える