1
我有一个SQL文件,带有作为SQL脚本运行的DML触发器创建。但是,我想将其包含在我的Grails数据库迁移变更日志中。我使用changelog(使用sqlFile标签)运行所有其他SQL脚本。当我用我的触发器sql文件做同样的过程时,我得到各种无效的sql语句错误(“end;”上的无效sql语句)。Grails迁移插件创建触发器
由于触发器的PL/SQL特性,是否有问题?如果是这样,我该如何解决这个问题?
这说明我试图运行的类型:
CREATE OR REPLACE TRIGGER "A_HST"
BEFORE
delete or update
on TableA
for each row
begin
insert into A_history
(ID,
VERSION,
COMMENTS,
description,
NAME,
UPDATEDBY_ID)
values
(:old.id,
:old.VERSION,
:old.comments,
:old.description,
:old.name,
:old.UPDATEDBY_ID);
end;
/
ALTER TRIGGER “A_HST” ENABLE;
我会看看分隔符。我注意到,dbm-update运行sql文件的方式与通过sqlplus或Toad/SQLDeveloper运行它们不同。有时候我会遇到sqlplus的错误,我没有用dbm-update得到......这很奇怪,但我会尝试使用分隔符的想法,并让它知道它是否有效。 –
我试过这种方法(将endDelimiter设置为';;'并将所有单个';'替换为';;'。触发器会放入数据库中,但是由于它们缺少' ;'结束语句... –
这对我有效 - 我设置了endDelimiter =“#”并在我的触发器脚本中使用了分号作为行结尾 – rcgeorge23