【问题标题】:MYSQL: ON DUPLICATE KEY UPDATE Not working?MYSQL:重复键更新不起作用?
【发布时间】:2019-12-27 16:03:49
【问题描述】:

这是我的 SQL 查询, 下面插入或更新返回 0 行受影响.. 我哪里出错了?

insert into biometric_data.daily_attendance (emp_id, in_punch, out_punch, processeddate_d, worktime)
    values ('A744', '27/12/2019 09:08:31', '27/12/2019 18:56:49', '2019-12-27', '8:48')
    on duplicate key update emp_id = 'A744', processeddate_d = '2019-12-27';

当我说,

select *
from attendance
where emp_id = 'A744' and processeddate_d = '2019-12-27';

返回 1 行。

A744 11:30 null 2019-12-27 8:48

但更新不起作用。

注意:浏览了许多帖子并尝试了所有方法,但我仍然找不到错误的地方。

我的 PK 是 id 一个自动字段和 index-> emp_id, processeddate_d unique-> emp_id, processeddate_d

【问题讨论】:

    标签: mysql insert sql-update on-duplicate-key


    【解决方案1】:

    嗯嗯。 . .你怎么知道update 是否工作?

    您的唯一密钥位于(emp_id, processeddate_d)。这些是您在 on duplicate key 子句中更新的仅有的两个字段:

    on duplicate key update emp_id = 'A744', processeddate_d = '2019-12-27';
    

    根据定义,这些都是无操作的,因为它们是重复的值。也许您打算更新另一列但没有更新。

    【讨论】:

    • 感谢您的回答.. 我得到了一些火花。这就是我用来更新重复键的方式。这是错的吗?我想更新除emp_id和processedate_d之外的其他字段。那么如何重写呢?
    • @MohideenbinMohammed 。 . .这没有错。通常在on duplicate key 中使用虚拟密钥来防止错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    相关资源
    最近更新 更多