根据在第一个表中更新的行更新第二个表

时间:2013-09-12 22:47:51

标签: sql sql-server-2008

我有两张表jheadjjops。我正在使用以下语句更新jhead

UPDATE jhead h
SET h.jhpcmp = 1
WHERE h.jhpcmp = '0' AND h.jhpqty <= h.jhqtys

但现在我想根据jjops中更新的内容更新jhead。声明如下:

UPDATE jjops j
SET j.jascmp = 1, japcmp = 1
WHERE (This is where I am stuck)

这两个表的链接如下:h.jhjob = j.jajob

有没有办法一起更新两个表?我应该首先使用连接更新表jjops,然后更新表jhead,如果是,我应该使用什么加入?

1 个答案:

答案 0 :(得分:1)

“同时”更新两个表的方法是使用事务。您可以使用output子句作为将一个语句传递给下一个语句的一种方法。 SQL Server还具有加入更新语句的特殊语法(请参阅第二次更新)

Declare @ids table (jhjob int not null) -- replace with correct data type

Begin Transaction

Update 
    jhead
Set 
    jhpcmp = 1
output 
    inserted.jhjob into @ids
Where 
    jhpcmp = '0' And
    jhpqty <= jhqtys

Update 
    jjops
Set
    jascmp = 1,
    japcmp = 1
From
    jjops j
        inner join
    @ids h 
        on j.jajob = h.jhjob

Commit Transaction