2016-05-25 14 views
1

MemberTableを更新してから、それらのmemberIdを別のテーブルに取得します。メンバーテーブルを更新するたびに、複数のレコードを更新する予定です。更新されたmemberIds他のテーブルに挿入してください。これを正しく行うための任意の提案UPDATE table1、次にidsを別のテーブルに挿入する2

これまで私が試したことはこれです。

Declare @memberId int; 
    BEGIN TRANSACTION; 

BEGIN TRY 
    UPDATE [AC] 
    SET [AC].LoginName = [ME].Email,@memberId=[ME].MemberId 
    FROM Account AS [AC] 
    INNER JOIN Member AS [ME] ON [ME].AccountId=[AC].AccountID 
    WHERE year([AC].SignupDate)=2015 AND [AC].LoginName IS NULL 

    --OUTPUT [ME].MemberId INTO 

    INSERT INTO .[dbo].[Tracktable] 
      ([MemberId] 
      ,[CompanyId] 
      ,[Action] 
      ,[DateModified] 
      ,[DateProcessed]) 
    VALUES 
      (@memberId, 
      null, 
      1, 
      GETDATE(), 
      null 

     ) 
    END TRY 
BEGIN CATCH 
IF @@TRANCOUNT > 0 
     ROLLBACK TRANSACTION; 
END CATCH 
IF @@TRANCOUNT > 0 
    COMMIT TRANSACTION; 

    GO 
+1

UPDATE後にトリガーを使用できます。 –

+0

'OUTPUT'節で何が問題になっていますか? – HABO

答えて

1

最初にMemberIdを一時テーブルに格納し、同じ詳細をTracktableに挿入できます。更新されたメンバーの更新されたMemberIdのそれぞれを取得し、Tracktableに挿入することができます。

インラインコメントが追加されました。

BEGIN TRANSACTION; 

BEGIN TRY 

    -- Storing the MemberId into temporary table, 
    -- to store the detail in Tracktable 
    SELECT [ME].MemberId INTO #TempForTracking 
    FROM Account AS [AC] 
    INNER JOIN Member AS [ME] ON [ME].AccountId = [AC].AccountID 
    WHERE year([AC].SignupDate) = 2015 AND [AC].LoginName IS NULL  

    UPDATE [AC] 
    SET [AC].LoginName = [ME].Email 
    FROM Account AS [AC] 
    INNER JOIN Member AS [ME] ON [ME].AccountId = [AC].AccountID 
    WHERE year([AC].SignupDate) = 2015 AND [AC].LoginName IS NULL 

    -- Inserting the MemberId from temp table 
    -- into the Tracktable 
    INSERT INTO [dbo].[Tracktable] 
      ([MemberId], [CompanyId], [Action], [DateModified], [DateProcessed]) 
    SELECT MemberId, NULL, 1, GETDATE(), NULL 
    FROM #TempForTracking 

    DROP TABLE #TempForTracking 

END TRY 

BEGIN CATCH 

    IF @@TRANCOUNT > 0 
     ROLLBACK TRANSACTION; 

END CATCH 

IF @@TRANCOUNT > 0 
    COMMIT TRANSACTION; 

GO 
関連する問題