【问题标题】:MySQL: ON DUPLICATE KEY statement fails in JDBCMySQL:JDBC 中的 ON DUPLICATE KEY 语句失败
【发布时间】:2017-10-08 19:08:02
【问题描述】:

我正在尝试使用 jdbc 运行 INSERT ... ON DUPLICATE KEY 语句,但它只是失败,没有关于原因的错误消息。即使我在 Script.sql 中单独运行该语句,它也不起作用。这是我要运行的语句:

INSERT INTO ptable(username, p, roll, joined) 
           VALUES ('username', 0, 0, 1) 
           ON DUPLICATE KEY UPDATE joined=VALUES(1);

基本上,如果用户名不存在,我只想插入一个新行,如果存在,那么我想将其行中的连接列更改为 1。我的用户名列设置为 PRIMARY KEY 和 UNIQUE键。

【问题讨论】:

  • 你能发布表格结构吗? joined 是什么?是列名吗?
  • 为什么你的问题标签带有 mysql 和 sql-server?您能否仅使用一个您面临此问题的数据库来更新您的问题。5
  • 根据documentation应该是joined=1
  • join的列数据类型为BIT。

标签: java mysql sql jdbc sql-insert


【解决方案1】:

values(col_name) 函数在与ON DUPLICATE KEYS 一起使用时接受列名作为参数,并且您传递的是一个整数。我认为你需要尝试这样的事情:

    INSERT INTO ptable(username, p, roll, joined) 
           VALUES ('username', 0, 0, 1) 
    ON DUPLICATE KEY UPDATE joined = 1;

更多信息请查看其文档dev.mysql.com/doc

【讨论】:

  • 是的。 VALUES(1) 表示1 列的值,不存在。 1 表示值为 1。
  • VALUES(joined)
猜你喜欢
  • 2016-11-30
  • 2014-05-07
  • 2010-12-15
  • 2017-06-29
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-06
相关资源
最近更新 更多