MySql中IF ELSE内的UPDATE语句

时间:2018-01-18 04:54:31

标签: mysql mysql-workbench

我想知道你是否可以在INSERT INTO中的IF ELSE中使用UPDATE语句,它看起来像这样:

INSERT INTO about
SELECT a1, b1, c1
FROM post a
WHERE IF(a.id NOT IN (SELECT b.id FROM category b), 
        TRUE,
        (UPDATE about c
        SET c.comments = a.comments
        WHERE a.status == 'active')

目前我收到语法错误:

  

语法错误:意外'('(左括号)

  

语法错误:缺少')'(结束括号)

所以我很确定你因为语法错误而无法解决,但我错了吗?

1 个答案:

答案 0 :(得分:0)

您无法在MySQL的WHERE子句中进行更新。对于此类问题,所有主要的关系数据库(包括MySQL)都支持触发器 - 这意味着,您可以在某些表中发生更改后触发DML命令。

因此,在这种情况下,当您更改(插入/更新/删除)表格中的某些内容时,您可以定义可操作的DML。

delimiter ;;
create trigger test_trigger
before insert ON about
   write your logic for the update here
end ;;
delimiter ;