INSERT IGNORE 即使有警告仍然插入
INSERT IGNORE still inserting even with warning
我有这个 Mysql 查询:
INSERT IGNORE INTO table1 (device_id, august) VALUES ((SELECT id from table2 where hostname='hostname'), 1)ON DUPLICATE KEY UPDATE august = august + 1;
对于某些主机名,(SELECT id from table2 where hostname='hostname')
的结果为 NULL,在这种情况下,我不想在 table 中插入任何内容,这就是为什么我设置 device_id
列 作为主键。
如果我使用 IGNORE
会发出警告,但对于 device_id = 0(该列的默认值)的列,值 august
仍然会递增,我不会我不想那样。
如果我删除 IGNORE
则会出现错误,并且不会插入任何内容。问题是我不想产生错误(我不想使用 try/catch)。
MySQL 有什么方法可以让我做到吗?
谢谢
我认为在同一个查询中同时使用 IGNORE 和 ON DUPLICATE KEY UPDATE 不太有意义。
我想这就是你想要的:
INSERT INTO table1 (device_id, august) (
SELECT id, 1 from table2 where hostname='hostname'
) ON DUPLICATE KEY UPDATE august = august + 1;
我有这个 Mysql 查询:
INSERT IGNORE INTO table1 (device_id, august) VALUES ((SELECT id from table2 where hostname='hostname'), 1)ON DUPLICATE KEY UPDATE august = august + 1;
对于某些主机名,(SELECT id from table2 where hostname='hostname')
的结果为 NULL,在这种情况下,我不想在 table 中插入任何内容,这就是为什么我设置 device_id
列 作为主键。
如果我使用 IGNORE
会发出警告,但对于 device_id = 0(该列的默认值)的列,值 august
仍然会递增,我不会我不想那样。
如果我删除 IGNORE
则会出现错误,并且不会插入任何内容。问题是我不想产生错误(我不想使用 try/catch)。
MySQL 有什么方法可以让我做到吗?
谢谢
我认为在同一个查询中同时使用 IGNORE 和 ON DUPLICATE KEY UPDATE 不太有意义。
我想这就是你想要的:
INSERT INTO table1 (device_id, august) (
SELECT id, 1 from table2 where hostname='hostname'
) ON DUPLICATE KEY UPDATE august = august + 1;