MySQL如何解决这个问题

问题描述

我用列创建了一个数据库:

CREATE FUNCTION schname.funcname(_userid integer)
    RETURNS INT
    LANGUAGE 'plpgsql'
AS 
$BODY$
DECLARE vartab TEXT;
DECLARE count_var INTEGER;
BEGIN

  SELECT tableName FROM table1
  WHERE userID = $1 INTO vartab;

  EXECUTE FORMAT('UPDATE otherschema.%I SET some_col = some_val WHERE some_cond',vartab);
  GET DIAGNOSTICS count_var = ROW_COUNT;

  RETURN count_var;

END;
$BODY$;

然后,程序应该在添加新的friendCode之前做一些事情:

  1. 如果friendCode已存在于数据库中,并且被监视,则它什么也不做。
  2. 如果friendCode已存在于数据库中,但是watched的值为0,则应更新pastTime。
  3. 如果friendCode不在数据库中,则应将其添加到数据库中。

我已经设法做到了一些,但是有一些问题。第一个在2.函数中。我不知道如何获取行ID来编辑postTime。第二个问题是3函数。仅当friendCode在数据库中已经2次时才有效。因此,如果程序使用数据库中的friendCode运行3次以上,则它只会注意到它并执行1或2函数。

MySQL数据库的样子:

enter image description here

第1类:

id,postTime,watched,friendCode 

第二堂课

public static int checkRow(String query) {

    int ret = 1;
    try (Connection con = DriverManager.getConnection(url,user,password)) {

        Statement stmt = con.createStatement();
        ResultSet rs = stmt.executeQuery(query);
            
        
        if (rs.next() && rs.getInt("watched") != 0) {
            System.out.println("1");
            ret = 1;
        } else if (rs.next() && rs.getInt("watched") == 0) {
            System.out.println("2");
            ret = 2;
            
        } else {
            System.out.println("3");
            ret = 3;
        }
        
        rs.close();
        stmt.close();
    } catch (SQLException e) {
        System.out.println(e.getMessage());
    }
    return ret;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)