Подтвердить что ты не робот

Как обновить несколько таблиц одновременно?

Я пытаюсь обновить поля из трех разных таблиц, но получаю некоторые ошибки:

UPDATE 
  a, b, c
SET 
  a.Locked = 0, 
  b.Locked = 0, 
  c.Locked = 0, 
  a.LockedByUsername = 'zolomon', 
  b.LockedByUsername = 'zolomon', 
  c.LockedByUsername = 'zolomon', 
  a.LockedAt = CURRENT_TIMESTAMP, 
  b.LockedAt = CURRENT_TIMESTAMP, 
  c.LockedAt = CURRENT_TIMESTAMP
FROM 
  TableA AS a
  INNER JOIN TableB as b ON n.Objid = o.Objid
  INNER JOIN TableC as c ON n.Namnid = e.Namnid 
WHERE
  a.Namn1 = 'FirstName LastName' AND b.objektkod='SomeIdentifier'

И ошибки:

Msg 102, Level 15, State 1, Line 2
Incorrect syntax near ','.
4b9b3361

Ответ 1

Вы не можете обновлять поля из нескольких таблиц в одном запросе update. Ошибка, которую вы получаете, потому что это не разрешено:

update a, b, c

Поскольку вы можете обновить только команду одна таблица за update.

Ответ 2

Как указано в других ответах, в SQL an UPDATE обновляется только одна таблица. Это обычно достаточно для большинства практических потребностей. Если вы хотите обновить несколько таблиц одновременно, вы можете просто поместить обновления внутри транзакции, и эффект будет, как правило, одинаковым.

Если вы обеспокоены получением разных временных меток (для вашего поля lockedAt), сначала просмотрите документы базы данных, чтобы проверить, относится ли ваша функция CURRENT_TIMESTAMP к времени начала транзакции (например, PostgreSQL).

Ответ 3

вы не можете обновлять несколько таблиц в одном выражении. выбор будет заключаться в использовании хранимой процедуры

Ответ 4

Мы можем обновить его с помощью соединения, подобного этому

UPDATE table1 
INNER join table2 on table1.id=table2.tab1_id
INNER join table3 on table1.id=table3.tab1_id
SET table1.status=1,table2.status=1,table3.status=1,table1.name='Premjith'
WHERE table1.id=1