Coy*_*ero 17 sql t-sql sql-server
我正在使用SQL Server并尝试使用SQL一次更新多个表:
以下查询:
update table1
set A.ORG_NAME = @ORG_NAME, B.REF_NAME = @REF_NAME
from table1 A, table2 B
where B.ORG_ID = A.ORG_ID
and A.ORG_ID = @ORG_ID
Run Code Online (Sandbox Code Playgroud)
给出错误消息:
无法绑定多部分标识符"A.ORG_NAME".
错误消息是什么意思?
jaz*_*ato 32
您无法在单个语句中更新一个表,但是您获得的错误消息是由于别名,您可以尝试这样做:
BEGIN TRANSACTION
update A
set A.ORG_NAME = @ORG_NAME
from table1 A inner join table2 B
on B.ORG_ID = A.ORG_ID
and A.ORG_ID = @ORG_ID
update B
set B.REF_NAME = @REF_NAME
from table2 B inner join table1 A
on B.ORG_ID = A.ORG_ID
and A.ORG_ID = @ORG_ID
COMMIT
Run Code Online (Sandbox Code Playgroud)
Eri*_*ski 15
如果您只影响一个表,则可以使用连接进行更新:
UPDATE table1
SET table1.name = table2.name
FROM table1, table2
WHERE table1.id = table2.id
AND table2.foobar ='stuff'
Run Code Online (Sandbox Code Playgroud)
但是您尝试使用连接多个表的更新语句来影响多个表.这是不可能的.
但是,实际上可以在一个语句中更新两个表,但需要使用包含要更新的表的UNION创建一个View.然后,您可以更新View,然后更新基础表.
但这是一个真正的hacky客厅技巧,使用事务和多个更新,它更直观.
归档时间: |
|
查看次数: |
169467 次 |
最近记录: |