首页 > 解决方案 > 仅在不存在且不获取其 ID 的情况下插入一行

问题描述

我首先使用“INSERT IGNORE”和“INSERT ... ON DUPLICATE KEY UPDATE”来遵循本教程。但它不起作用。我正在使用 NodeJS 从 API 获取一些数据,并将这些数据存储到 mySQL 数据库中。在存储数据之前,我想知道这一行是否已经存在。ID 是 AUTO_INCREMENT,我不知道这个。我不想在 NodeJS 中使用 async/await 或 Promise,而是想在不知道 ID 的情况下用 mySQL 处理这一点。

我尝试了这个,但它添加了一个带有新 ID 的新行,而不是另一行已经存在:

INSERT INTO test (nom, date, heure) VALUES ('123456', '2018-08-23', '10:45:00') ON DUPLICATE KEY UPDATE nom='123456', date='2018-08-23', heure='10:45:00';

之后,我测试了这个,结果相同:

INSERT IGNORE INTO test (nom, date, heure) VALUES ('123456', '2018-08-23', '10:45:00')

谢谢你的帮助!

标签: mysql

解决方案


为 3 列设置唯一索引:

ALTER TABLE test ADD UNIQUE un_index(nom, date, heure);

然后执行:

INSERT IGNORE INTO test (nom, date, heure) VALUES ('123456', '2018-08-23', '10:45:00');

如果 3 个值已经存在,则不会插入该行。


推荐阅读