Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 根据第一个表中更新的行更新第二个表_Sql_Sql Server 2008 - Fatal编程技术网

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

Sql 根据第一个表中更新的行更新第二个表,sql,sql-server-2008,Sql,Sql Server 2008,我有两个表jhead和jjops。我正在用以下语句更新jhead: UPDATE jhead h SET h.jhpcmp = 1 WHERE h.jhpcmp = '0' AND h.jhpqty <= h.jhqtys 链接这两个表的内容如下:h.jhjob=j.jajob 有什么方法可以同时更新这两个表吗?我应该首先使用联接更新表jjops,然后更新表jhead,如果是,我应该使用什么联接?同时更新两个表的方法是使用事务。您可以使用output子句作为将内容从一个语句传递到下一个语

我有两个表
jhead
jjops
。我正在用以下语句更新
jhead

UPDATE jhead h
SET h.jhpcmp = 1
WHERE h.jhpcmp = '0' AND h.jhpqty <= h.jhqtys
链接这两个表的内容如下:
h.jhjob=j.jajob


有什么方法可以同时更新这两个表吗?我应该首先使用联接更新表
jjops
,然后更新表
jhead
,如果是,我应该使用什么联接?

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

Declare@ids表(jhjob int not null)——替换为正确的数据类型
开始交易
更新
杰海德
设置
jhpcmp=1
输出
将.jhjob插入到@ids中
哪里
jhpcmp='0'和

jhpqty什么是@ids?这是一个临时表吗?它是一个表变量,它类似于临时表,尽管它们有不同的语义-请参阅
UPDATE jjops j
SET j.jascmp = 1, japcmp = 1
WHERE (This is where I am stuck)
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