在EA中是否有一种方法可以用分号表示所有语句,同时在创建触发器语句后只有一个分号?
问题:
我通过将主键定义为数字(18,0)并将列属性中的AutoNum设置为True,为EA 8.0生成oracle数据库的触发器。
然后在“生成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这样的语言而不是数据库代码。
答案 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