Как обновить несколько строк в нескольких таблицах в MySQL - PullRequest
0 голосов
/ 24 января 2019

Я относительно новичок в этой форме, и было бы очень полезно, если бы кто-нибудь мог прояснить, как решить этот конкретный вариант использования, с которым я сталкиваюсь По моему сценарию.

У меня есть 2 таблицы Таблица_A и Таблица_B

table_A имеет 2 поля id, статус Table_A (id int, table_a_status int), где id - это первичный ключ.

Таблица_B имеет 3 поля: id, статус Table_A (id int, table_a_id int, table_b_status int), где table_a_id - внешний ключ, а id - первичный ключ для Table_B.

    Table_A                      

id       table_a_status          
1        1                       
2        1                       

      Table_B

id   table_a_id table_b_status     
 1   1               1   
 2   1               1
 3   2               1     
 4   2               1

Есть много способов обновить несколько строк в нескольких таблицах, и в настоящее время я использую процедуры для решения этой проблемы, но это не совсем эффективно, я хотел бы знать эффективный способ обновления обеих таблиц с помощью одного запроса. Я попытался с помощью запросов:

UPDATE Table_A 
INNER JOIN Table_B ON Table_B.table_a_id = Table_A.id 
SET Table_A.table_a_status = 1, Table_B.table_b_status =1 
WHERE Table_A.id IN (1,2);

UPDATE Table_A, Table_B 
SET Table_A.table_a_status = 1, Table_B.table_b_status =1 
WHERE Table_B.table_a_id = Table_A.id  AND Table_A.id IN (1,2);

Но оба запроса дают ошибку, если у меня есть условие, при котором я обновляюсь для 2 идентификаторов (1,2) Код операнда должен содержать 1 столбец , но это работает, когда я обновляю один идентификатор за раз например)

UPDATE Table_A, Table_B 
SET Table_A.table_a_status = 1, Table_B.table_b_status =1 
WHERE Table_B.table_a_id = Table_A.id  AND Table_A.id IN (1);

Я знаю Код операнда должен содержать 1 столбец Ошибка вызывается, поскольку подзапрос возвращает более одной строки в нескольких таблицах.

Есть ли другой способ обновить несколько строк в нескольких таблицах одновременно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...