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