Оператор UPDATE внутри IF ELSE в MySql

0

Мне было интересно, можете ли вы использовать инструкцию UPDATE внутри IF ELSE внутри INSERT INTO, и она выглядит примерно так:

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')

В настоящее время я получаю синтаксическую ошибку:

Синтаксическая ошибка: Неожиданный '(' (Открытие скобки)

А также

Синтаксическая ошибка: Отсутствует ')' (Закрывающая скобка)

Таким образом, я уверен, что ваш Cant из-за синтаксических ошибок, но я ошибаюсь в этом?

  • 0
    Ваш запрос не будет работать. Но триггер вставки до / после может обработать вашу логику.
  • 0
    Не могли бы вы просто сказать нам, что вы хотите сделать? Ваш оператор SQL выглядит странно ~
Теги:
mysql-workbench

1 ответ

0

Вы не можете выполнить обновление в предложении WHERE в MySQL. Для таких проблем все основные реляционные базы данных, включая MySQL, поддерживают триггеры, что означает, что вы можете инициировать команду DML после каких-либо изменений в некоторой таблице.

Итак, в этом случае, когда вы меняете (вставляете/обновляете/удаляете) что-то в своей таблице, вы можете определить действие DML.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню