为什么不能在单个查询中更新多个表?

时间:2015-07-02 12:01:18

标签: sql sql-server

我知道以下查询是错误的。 SQL不支持这一点,但想知道为什么SQL不支持这个。

UPDATE Table1, Table2
SET Table1.Column1 = 'one',
    Table2.Column2 = 'two'
FROM Table1 T1, Table2 T2
WHERE T1.id = T2.id and T1.id = 'id1'

1 个答案:

答案 0 :(得分:1)

您无法在一个语句中更新多个表,但是,您可以使用事务来确保以原子方式处理两个UPDATE语句。您也可以批量处理它们以避免往返。

BEGIN TRANSACTION;

UPDATE T1, T2
    SET T1.Column1 = 'one'        
    FROM Table1 T1, Table2 T2
    WHERE T1.id = T2.id and T1.id = 'id1'

UPDATE T1, T2
    SET T2.Column2 = 'two'
    FROM Table1 T1, Table2 T2
    WHERE T1.id = T2.id and T1.id = 'id1'

COMMIT;