這是一個後續的問題這一個:關於更新結表在更新結表許多一對多的關係
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