我正在尝试更新值或将值插入MariaDB表。不幸的是,主键是带有auto_increment的简单整数。没有其他唯一约束。由于这种表结构,我不能在重复键过程中使用插入,因为它只会添加另一个条目。
如果3个字段“ csv”,“项目”和“用户”等于我要查找的字段,我想更新该条目。如果没有匹配项,我想插入新行。
我在stackoverflow上发现了这种方法,但是它没有解决如果有命中我想更新行的部分:
INSERT INTO `table` (value1, value2)
SELECT 'stuff for value1', 'stuff for value2' FROM `table`
WHERE NOT EXISTS (SELECT * FROM `table`
WHERE value1='stuff for value1' AND value2='stuff for value2')
LIMIT 1
我尝试了以下方法,因为它看起来最有前途。这会导致SQL错误:
UPDATE finding SET filename = 'ABC' WHERE user='user' AND project = 'project' AND csv='cv';
IF ROW_COUNT() = 0 THEN
INSERT INTO finding (user, project, filename, csv) VALUES ('user', 'project', 'ABC', 'cv');
END-IF
>>> You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 2
我还为IF子句尝试了多种语法变体。但是我无法使其正常工作。
感谢您的帮助。谢谢。