Изменение цены сразу в трех таблицах с условием sql

Существуют 3 таблицы со следующими полями:

Orders: idOrder (ключ), Price, status (новый/выполнен);

Services: idPosService (ключ), IdService (индекс), idOrder (индекс), Price;

PriceList: idService (ключ), Service, Price

Необходимо сделать запрос, который изменит цену в прайс-листе и изменит ее в услугах, но при условии, что статус заказа, к которой прикреплена услуга, имеет значение "новый".


Ответы (1 шт):

Автор решения: Andrew Holovko

Вы не можете обновлять разные таблицы одним запросом, но можете создавать транзакции, которые будут содержать 3 запроса.

Далее пример, как это делается:

BEGIN TRANSACTION;

UPDATE Orders 
SET Price = 100
WHERE status = new;

UPDATE Services
SET s.Price = 'new'
FROM Services s, Orders o
WHERE s.idOrder = o.id
and o.status = 'new';

...
→ Ссылка