Я относительно новичок в этой форме, и было бы очень полезно, если бы кто-нибудь мог прояснить, как решить этот конкретный вариант использования, с которым я сталкиваюсь
По моему сценарию.
У меня есть 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 столбец Ошибка вызывается, поскольку подзапрос возвращает более одной строки в нескольких таблицах.
Есть ли другой способ обновить несколько строк в нескольких таблицах одновременно