mysql - DUPLICATE KEY UPDATE 只能工作一次?
问题描述
我正在尝试创建一个计数器,每次发送电子邮件时都会增加一个。我的 DUPLICATE KEY UPDATE 语句只工作一次。在发送的字段更新为值 2 后,多次运行查询不会进行更新。我不确定为什么?我希望能够根据需要多次更新已发送的字段。
INSERT INTO remind_sync(studentid, sent)
VALUES(8, 1)
ON DUPLICATE KEY
UPDATE
sent =
VALUES(sent) +1
CREATE TABLE `remind_sync` (
`id` int(11) NOT NULL,
`studentid` int(11) NOT NULL,
`sent` smallint(3) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `remind_sync`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `studentid` (`studentid`);
ALTER TABLE `remind_sync`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
解决方案
在发送的字段更新为值 2 后,多次运行查询不会进行更新。
每次使用sent
值运行插入时1
,都会得到1+1
或2
。 sent = sent+ values(sent)
将继续包含 的当前值sent
,从而根据需要递增。
当我们在做的时候,
ALTER TABLE `remind_sync`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `studentid` (`studentid`);
ALTER TABLE `remind_sync`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
为什么不只是这个?
CREATE TABLE `remind_sync` (
`id` BIGINT AUTO_INCREMENT PRIMARY KEY,
...
)
推荐阅读
- javascript - 如何从所选选项的下拉列表中读取数据选项卡 ID
- java - 为什么在多线程环境中使用虚拟记录填充数组列表需要双倍的时间?
- arrays - SwiftUI - 将嵌套的对象数组传递给详细信息视图
- python - tkinter 检查按下按钮时 Shift 是否按下
- amazon-web-services - 通过 AWS 控制台访问根帐户时,使用 CloudFront 403 错误上传的文件
- javascript - 有没有办法让未链接的节点不分散在半径范围内?
- node.js - 文件夹内的动态文件不使用 React 和 preval.macro 读取
- c# - 为什么事件处理程序在重新分配事件源后仍继续被调用?
- java - Android Studio FireStore 合集
- python - 如何在 Visual Studio Code 中使用 anaconda 东西而不从 Anaconda Navigator 启动它?