これは、これに対するフォローアップの質問です。
ジャンクションテーブルの更新について。これを行うには、接合テーブルの WHERE 句で両方のキー値を使用する必要があります。
Users UserAddresses Addresses
======= ============= =========
FirstName UserId City
LastName AddressId State
Zip
たとえば、この例では、ユーザーが住所を変更したため、UserAddresses テーブルの AddressId フィールドを更新したいとします。update WHERE 句で既存の UserId とアドレス 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 句が間違っているようです。
何かご意見は?