账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    jdbc创建MySQL的trigger错误?
    50
    0

    如下所示,我用jdbc来创建一个MySQL触发器,navicat里面创建成功,把sql2输出后,在navicat中运行还是成功。但是程序跑起来就会提示创建触发器的语句有语法错误。求指教。
    代码:

        Connection conn = JDBCDao.getConnection();
        String sql2 = "DROP TRIGGER IF EXISTS tb_fieldInsert; "
                +"CREATE TRIGGER tb_fieldInsert "
                +"BEFORE INSERT ON tb_table_fields "
                +"FOR EACH ROW "
                +"BEGIN "
                +"DECLARE aInsert VARCHAR(200); "
                +"SET aInsert = new.name; "
                +"INSERT INTO tb_modify_history (tb_id,field,content,time) VALUES (1,aInsert,CONCAT('新增\"',aInsert,'\"字段'),now()); " 
                +"END; ";
        Statement state;
        //PreparedStatement ps;
        try {
            //创建触发器
            state = conn.createStatement();
            state.executeUpdate(sql2);
            ...
        }catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCDao.closeConnection(conn);
        }

    报错:
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE TRIGGER tb_fieldInsert BEFORE INSERT ON tb_table_fields FOR EACH ROW' at line 1

    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部