2012-03-01 4 views
1

私は私のデータベースRequestsとは関係ありませんBalanceトラッカーで2つのテーブルを持っている....しかし、私は2つのテーブルからデータを選択して、2つの格子、それをバインドしたい...単一のストアドプロシージャを使用して一度に2つのテーブルを更新するにはどうすればよいですか?

要求

​​

バランストラッカー

EmpId | BalanceAmnt | LastUpdated | lastApprovedAmount 
    1 | 5000  | sdfbk  | 
    2 | 3000  | sjbfsh  | 

今私はEmpIDに基づいて、一度に両方のテーブルを更新します。金額が承認されるたびに、requestテーブル列[ApprovedAmount]に優先して更新する必要があります...

[ApprovedAmount]も承認された金額を追加することによって更新されなければならないの[BalanceAmnt]バランストラッカー、[LastUpdated]、[lastApprovedAmount更新されると]誰がクエリで私を助けることができる日時

てください更新されなければならない....

答えて

0

まずあなた[ApprovedAmount]

create procedure SP_UpdateRequestedAmount 
    (@EmpID int, 
    @AmountApproved varchar (50), 
    @RequestPriority varchar (50)) 
as 
begin 
    Update Requests 
    set ApprovedAmount = @AmountApproved, 
     Request_Priority = @RequestPriority 
    where 
     Emp_ID = @EmpID 
end 
を更新するストアドプロシージャを作成

そして、これまで[AmountApproved]カラムは

CREATE TRIGGER tr_ApprovedAmount_UPDATE 
ON Requests 
AFTER UPDATE 
AS 
    --Make sure Priority was changed 
    IF NOT UPDATE(ApprovedAmount) 
     RETURN 

    --Determine if Priority was changed to high 

    -- PUT your queries for Updatating other table 
    declare @Balance_LastUpdated date 
    declare @ApprovedDate date 

    UPDATE Balance Tracker 
    SET Balance Tracker.Balance_BalanceAmount = Balance Tracker.Balance_BalanceAmount + PTS_Requests.Request_IsApproved, 
     Balance_LastUpdated = @Balance_LastUpdated, 
     Balance_LastApproval = @ApprovedDate 
    FROM 
     Balance Tracker 
    INNER JOIN 
     Requests ON Balance Tracker.Emp_ID = Requests.Emp_ID 

に更新されたときにアウトトリガーでも、これを試してみてください、これは.........

0

を役に立てば幸い他のテーブルを更新するためにtrigerを使用

CREATE procedure SP_UpdateRequestedAmount 
    (
    @EmpID int, 
    @AmountApproved varchar (50), 
    @RequestPriority varchar (50) 
    ) 
    as 
    begin 

    --Declare a variable for know current ApprovedAmount (that is before updation) 
    Declare @CurrentApprovedAmount AS INT 

    --set current ApprovedAmount 
    SET @AmountApproved =(SELECT ApprovedAmount FROM Requests WHERE [email protected]) 

    --check is @CurrentApprovedAmount differ from @AmountApproved 
    IF (@[email protected]) 
     BEGIN 
       --Here we need to update Requests and BalanceTracker 
     END 
    ELSE 
     BEGIN 
      --only update Requests -- no change in AmountApproved 
     END 

    go