1

EA 中有没有一种方法可以用分号来划分所有语句,同时在创建触发器语句之后只有一个分号?

问题:

通过将主键定义为数字(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 Terminator”时,将创建触发器(因为 create 语句以一个分号而不是两个分号结尾)而没有任何错误,但所有其他 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;
/

所以好像是老版本的Bug

于 2012-07-18T13:23:40.360 回答