sql >> データベース >  >> RDS >> Mysql

mysql jdbcドライバーは、複数のステートメントを含むトリガーの区切り文字をサポートしていません

    区切り文字はSQLクライアント用のコマンドです。 JDBCで区切り文字を使用する必要はありません。以下の例はそれを示しています:

    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();
                    }
                }
            }
        }
    }
    



    1. SELECT権限なしで特定のレコードを更新するにはどうすればよいですか?

    2. MySQLとnull値の比較

    3. Java8でのSQLServerJDBCエラー:ドライバーは、Secure Sockets Layer(SSL)暗号化を使用してSQLServerへの安全な接続を確立できませんでした

    4. OBJECTPROPERTY()を使用して、テーブルがSQLServerのシステムテーブルであるかどうかを確認します