0

我有两张桌子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吗?如果是,我应该使用什么联接?

4

1 回答 1

1

“同时”更新两个表的方法是使用事务。您可以使用输出子句作为将内容从一个语句传递到下一个语句的一种方式。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
于 2013-09-12T23:07:13.277 回答