Triggers db2使用ant脚本执行触发器
我有一个包含触发器的sql文件。我想使用Ant脚本执行此文件:Triggers db2使用ant脚本执行触发器,triggers,db2,Triggers,Db2,我有一个包含触发器的sql文件。我想使用Ant脚本执行此文件: <target name="exec-sql-proc_db2" depends="init"> <property name="project.sql.dir" value="${project.metadata.dir}/sql" /> <property name="triggerFile" value="${project.sql.dir}/triggers_db2.sql" />
<target name="exec-sql-proc_db2" depends="init">
<property name="project.sql.dir" value="${project.metadata.dir}/sql" />
<property name="triggerFile" value="${project.sql.dir}/triggers_db2.sql" />
<echo message="${triggerFile}" />
<sql rdbms="DB2" driver="com.ibm.db2.jcc.DB2Driver"
url="jdbc:db2://localhost:50000/project:currentSchema=mySchema;"
userid="root" password="root"
classpath="C:\projects\myProject\lib\db2jcc.jar"
src="${triggerFile}"
onerror="${sql.onerror}"
keepformat="true" delimiter="/" />
</target>
设置模式mySchema
我尝试了这部分代码,解决了我的问题你说的“触发器未执行”是什么意思?只有在运行相应的DML(insert,update,delete)语句时才会“执行”触发器。我在一个名为product的表上有一个触发器,当我更新此产品中的一行时,我将其插入到product_历史记录中,此触发器保存在一个文件中,我使用此脚本执行触发器,然后当我更新表product中的一行时,表product_History中未插入任何行您是否检查触发器是否已实际创建?您是否检查触发器是否已启用/有效/激活?张贴触发器的完整代码和您使用的DML语句。在产品更新后创建或替换触发器产品历史记录,在每行引用新的AS N开始插入productHistory(id_h,id_PRODUCT,name)(id_h_seq.nextval,N.id_PRODUCT,N.name);ENDDo不在注释中发布代码。编辑你的问题。
CREATE or REPLACE TRIGGER PRODUCT_HISTORY_AFTER_UPDATE
AFTER UPDATE ON PRODUCT
REFERENCING NEW AS N
FOR EACH ROW
BEGIN
INSERT INTO productHistory ( id_h, id_product , name) values (id_h_seq.nextval, N.id_product , N.name );
END
/
<sql rdbms="DB2" driver="com.ibm.db2.jcc.DB2Driver"
url="jdbc:db2://localhost:50000/project:currentSchema=mySchema;"
userid="root" password="root"
classpath="C:\projects\myProject\lib\db2jcc.jar"
src="${triggerFile}"
onerror="${sql.onerror}"
delimiter="/" >
SET SCHEMA mySchema
</sql>