sql >> Base de Datos >  >> RDS >> Mysql

El controlador mysql jdbc no admite delimitadores en activadores con varias declaraciones

Delimiter es un comando para el cliente SQL. No es necesario usar el delimitador en JDBC. El siguiente ejemplo lo muestra:

import java.sql.*;

public class TriggerExample {

    public static void main(String args[]) {

        String connectionURL = "jdbc:mysql://localhost:3306/test";
        Connection con = null;

        try {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection(connectionURL, "login",
                    "password");
            Statement stmt = con.createStatement();
            stmt.execute("CREATE TRIGGER obs_update BEFORE UPDATE ON obs "
                    + "FOR EACH ROW "
                    + "BEGIN "
                    + "IF OLD.voided = 0 AND NEW.voided = 1 THEN "
                    + "   DELETE FROM clinic_obs WHERE id = OLD.obs_id; "
                    + "ELSE "
                    + "   UPDATE clinic_obs SET clinic_obs.revision_token = NOW() "
                    + "   WHERE NEW.id = clinic_obs.id; "
                    + "END IF; "
                    + "END;");
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (con != null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}