这是一个后续的问题这一个:关于更新结表在更新结表许多一对多的关系
Query examples in a many-to-many relationship
。为此,我必须在WHERE子句中的联结表中使用这两个键值。
Users UserAddresses Addresses
======= ============= =========
FirstName UserId City
LastName AddressId State
Zip
例如,在这个例子中,我想更新UserAddresses表中的AddressId字段,因为用户更改了他的地址。我将不得不使用现有的UserId和更新WHERE子句中的地址AddressId。
我正在使用存储过程,并传递UserId和新的AddressId作为参数。
我已经尝试这样的:
CREATE PROCEDURE dbo.test
(
@UserId int,
@AddressId int
)
AS
create table #temp
(
UserId int not null,
AddressId int not null
)
insert into #temp select UserId, AddressId from UserAddresses where UserId = @UserId
update UserAddresses
set AddressId = @AddressIdD
WHERE (UserId+AddressId in #temp table = UserId+AddressId passed in as parameters)??
我已经试过各种组合,但我似乎无法得到正确的语法。
UserId传入,当然会与UserAddresses表中的相同,但这只是我尝试一些事情。 WHERE子句是它似乎出错的地方。
有什么想法?
这是一个M-T-M rel。,这就是为什么我想选择现有的UserId和AddressId到临时表中,然后在实际更新中引用该表。我认为这应该是可能的,但我无法正确地理解语法。 – Soeren 2009-02-22 16:09:55