这个问题已经在这里有一个答案:
- 如何更新SQL Server 2005中一个语句两个表? 8个回答
我使用的是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
提供错误信息:
多部分标识符“A.ORG_NAME”不能被约束。
什么是错误讯息是什么意思?
你不能在一个语句更新更是一个表,但是你得到的错误信息是因为别名,你可以试试这个:
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
您可以通过加入更新,如果你只影响一个表是这样的:
UPDATE table1
SET table1.name = table2.name
FROM table1, table2
WHERE table1.id = table2.id
AND table2.foobar ='stuff'
但是,你正在尝试影响与对多个表的连接更新语句的多个表。 这是不可能的。
然而,在一个语句更新两个表实际上是可能的,但需要创建使用包含两个要更新的表一个UNION视图。 然后,您可以更新视图,然后将更新基础表。
SQL连接
但是,这是一个非常哈克店招,使用事务和多次更新,它更加直观。