Ответ 1
Вы не можете обновлять поля из нескольких таблиц в одном запросе update
. Ошибка, которую вы получаете, потому что это не разрешено:
update a, b, c
Поскольку вы можете обновить только команду одна таблица за update
.
Я пытаюсь обновить поля из трех разных таблиц, но получаю некоторые ошибки:
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 ','.
Вы не можете обновлять поля из нескольких таблиц в одном запросе update
. Ошибка, которую вы получаете, потому что это не разрешено:
update a, b, c
Поскольку вы можете обновить только команду одна таблица за update
.
Как указано в других ответах, в SQL an UPDATE
обновляется только одна таблица. Это обычно достаточно для большинства практических потребностей. Если вы хотите обновить несколько таблиц одновременно, вы можете просто поместить обновления внутри транзакции, и эффект будет, как правило, одинаковым.
Если вы обеспокоены получением разных временных меток (для вашего поля lockedAt
), сначала просмотрите документы базы данных, чтобы проверить, относится ли ваша функция CURRENT_TIMESTAMP
к времени начала транзакции (например, PostgreSQL).
вы не можете обновлять несколько таблиц в одном выражении. выбор будет заключаться в использовании хранимой процедуры
Мы можем обновить его с помощью соединения, подобного этому
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