Enterprise Architect,数据库触发器生成(oracle)和双分号

时间:2012-07-17 16:47:04

标签: enterprise-architect

在EA中是否有一种方法可以用分号表示所有语句,同时在创建触发器语句后只有一个分号?

问题:

我通过将主键定义为数字(18,0)并将列属性中的AutoNum设置为True,为EA 8.0生成oracle数据库的触发器。 Column Properties

然后在“生成DDL”对话框中选择以下复选框 Generate 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语句以一个分号而不是两个分号结束)而没有任何错误,但是所有其他create table语句都没有以分号结束,这导致了'ORA -00922:缺少或无效选项'因为语句没有用分号分隔。

我没有找到影响正在生成的触发器代码的直接方法,仅针对像C,Java see这样的语言而不是数据库代码。

1 个答案:

答案 0 :(得分: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;
/

所以它似乎是旧版本中的Bug