不要在JDBC和MySQL中使用定界符。分隔符仅由MySQL控制台使用,以便它可以告知您键入的触发器,存储过程等何时结束。在JDBC中,您将整个SQL字符串放在一起,然后将其发送到数据库。因为您可以控制何时将SQL发送到数据库,所以不需要使用定界符。
我从代码中删除了这两
DELIMITER行和
%%定界符的使用,并将
DROP TRIGGER命令分别发送到数据库。我剩下的代码如下:
con.createStatement().execute("DROP TRIGGER IF EXISTS `insert_associated_inquiry`");triggerBuilder.append(" CREATE TRIGGER insert_associated_inquiry BEFORE UPDATE ON inquiry ");triggerBuilder.append(" FOR EACH ROW Begin ");triggerBuilder.append(" insert into associated_inquiries(inquiry_id , subject , content , inquiry_date , preferred_date ) " );triggerBuilder.append("values"); triggerBuilder.append(" ( " ); triggerBuilder.append(" OLD.id , "); triggerBuilder.append(" OLD.subject , " ); triggerBuilder.append(" OLD.content , " ); triggerBuilder.append(" OLD.created_on , " ); triggerBuilder.append(" OLD.preffered_date " ); triggerBuilder.append(" ) ; ");triggerBuilder.append(" END ");con.createStatement().execute(triggerBuilder.toString());该代码似乎有效,因为无论触发器是否存在,我都可以无错误地运行此代码。如果触发器先前不存在,则会创建它。



