我正在将事件日志数据写入 MariaDB 数据库。主键包括时间到一秒的粒度。我有时会收到大量相同的输入数据。这违反了密钥,目前被忽略。
我想在表中添加一个计数器字段,这样,如果相同的数据在同一秒内到达,计数器会显示收到了多少相同的项目。
我想要等同于以下虚构的语法
INSERT INTO T (a, b, c, counter) VALUES (?, ?, ?, 1)
ON DUPLICATE KEY UPDATE T.counter = 1+T.counter;
我可以用存储过程做到这一点,但没有它可能吗?
我花了一个多小时寻找答案,但我认为我的关键字太接近涉及自动递增 SERIAL 字段的各种常见问题。
试试这个
INSERT INTO T (a, b, c, counter)
VALUES (?, ?, ?, 1)
ON DUPLICATE KEY UPDATE counter = counter + VALUES(counter);
您的“编造”语法完全按原样工作。