我正在尝试更新三个不同表中的字段,但我遇到了一些错误:
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'
Run Code Online (Sandbox Code Playgroud)
而错误:
Msg 102, Level 15, State 1, Line 2
Incorrect syntax near ','.
Run Code Online (Sandbox Code Playgroud)
Pab*_*ruz 26
您无法在单个update查询中更新多个表中的字段.你得到的错误是因为这是不允许的:
update a, b, c
Run Code Online (Sandbox Code Playgroud)
因为每个命令只能更新一个表update.
正如其他答案所指出的那样,在SQL中,UPDATE仅更新一个表。通常,这对于大多数实际需求已经足够了。如果要更新多个表在同一时间,你可以把更新事务内,效果通常会是一样的。
如果您担心要获取不同的时间戳(针对您的field lockedAt),请首先查看数据库文档,以检查您的CURRENT_TIMESTAMP函数是否引用了事务的开始时间(例如PostgreSQL)。