仅在不获取ID的情况下不存在的情况下插入行

时间:2019-06-01 18:09:09

标签: mysql

在此tutorial之后,我先进行“ INSERT IGNORE”,然后进行“ INSERT ... ON DUPLICATE KEY UPDATE”。但这是行不通的。 我正在使用NodeJS从API获取一些数据,并将这些数据存储到mySQL数据库中。在存储数据之前,我想知道此行是否已经存在。 该ID为AUTO_INCREMENT,我不知道该ID。我不想在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')

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

为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个值已经存在,则不会插入该行。