如果没有指定唯一键的条目或什么都不做,我正在制作Zapier任务以在MySQL中插入条目。
我需要尝试在某个表中插入新行,但如果新条目的电子邮件已经INSERT
,则会默默地发出警告(由于IGNORE
关键字)。
INSERT IGNORE users(email, hashed_password)
VALUES ('<email>`, '<some_hashed_password>')
但在这两种情况下,我的查询都没有返回任何内容,Zapier结束了此消息的任务:
问题:有没有办法让一个复杂的SQL命令将INSERT
和SELECT
组合在一起,所以在一个查询中,我将从DB获得一些结果集,而不是空对象或无论INSERT
返回什么?
P.S。这适用于MySQL:
INSERT IGNORE reporting.users(`email`, `password`)
VALUES ("test@test.ts", "test");
SELECT * FROM reporting.users as u WHERE u.email = "test@test.ts";
但这包含两个查询,这在Zapier中无效。
答案 0 :(得分:1)
这是一个古老的问题,但是我今天正在努力解决同一问题。在尝试找到解决方案时,我遇到了这个qn,因此当我找到解决方案/解决方法时,我认为我会做一件体面的事并回发...
基于他们帖子中的红色“ Bargle”错误,我相信zmii一定一直在尝试使用MySQL自定义搜索查询。 Zapier必须具有查询的输出,否则将出错。我环顾四周,然后制作了自定义查询:
SELECT IFNULL( (SELECT employee_id FROM timesheets.employees WHERE employee_id = <Step 6 | sheet_data_id> LIMIT 1) ,0) AS result;
基于所选的答案here。因此,如果找到,我的查询将输出一个雇员ID,否则将输出0。然后,我基于自定义查询的输出“结果”插入了一个Zapier PATHS步骤。如果结果大于0,则更新现有记录。如果它是0,那么我插入一条新记录。我怀疑我可以使用自定义查询代码来进行分支和更新/插入,但是我还没有尝试过,因为我还有其他事情要先尝试。
编辑
实际上,我不得不根据与Zapier here的交谈来修改此答案。我保留了原始答案,但隐藏了它。该语法有效,但仅当查询为SELECT
查询时,才对INSERT
或UPDATE
查询无效。有关详细信息,请参见链接问题的注释中的讨论。从本质上讲,目前无法通过Zapier MySQL自定义查询步骤执行插入或更新操作。