UPDATE table1, tmpList
SET table1.ts = tmpList.ts_value
WHERE table1.id = tmpList.id
UPDATE table2, tmpList
SET table2.ts = tmpList.ts_value
WHERE table2.id = tmpList.id
Я использую MySQL
Предполагая, что каждый идентификатор появляется в обеих таблицах (в идеале только один раз):
update tmpList inner join table1 using (id) inner join table2 using (id)
set table1.ts = tmpList.ts_value, table2.ts=tmpList.ts_value;
Обновление: просто использование левых соединений вместо внутренних соединений делает эту работу даже для идентификаторов, которые находятся только в одной таблице - неприменимое предложение предложения кажется просто пропущенным; Я должен был попробовать это раньше, видимо.
Зачем вам одно выражение? Вы беспокоитесь о том, что один из них завершился, а другой - неудачным, оставив половину обновленного беспорядка?
Идентификатор, что дело, транзакции - это то, что вам нужно. например.
begin work;
UPDATE table1, tmpList
SET table1.ts = tmpList.ts_value
WHERE table1.id = tmpList.id;
UPDATE table2, tmpList
SET table2.ts = tmpList.ts_value
WHERE table2.id = tmpList.id;
commit work;
Вы должны иметь возможность запускать все вышеперечисленное в одной команде, но в противном случае безопасно запускать их отдельно. Данные не будут сохранены навсегда, если коммит не завершится, что произойдет только в том случае, если все предыдущие строки между началом... commit преуспевают.
нет, это невозможно, если вы используете простые запросы. Я не знаком с моим sql, но в oracle нельзя обновлять сразу две таблицы.