2017-02-27 36 views
-1

このPLのSQLトリガを行うことができは私が支払ったとCOMPLETED私は3つのテーブルを持ってBORROW

BORROW表持っている3つのフィールド UID(主キー) 金額

支払っ表持つ UID(外部キー) 割賦

COMPLETED表持つ UID(外部キー) 金額

If i borrow $100 from some one 

BORROW TABLE will be 

| UID | AMOUNT | 
| 1 | 100 | 
---------------- 

PAID TABLE 


| UID | INSTALLMENT | 
|-----|------------| 
| 1 | 30   | 
-------------------- 
| 1 | 40   | 
-------------------- 
| 1 | 10   | 
-------------------- 
| 1 | 20   | 
-------------------- 

BORROW TABLEの詳細を完全なテーブルに自動的に転送する必要があります。 SUM(インストール)= UOID = 1の場合はいつも;

誰か上記の操作のためのトリガーを作るために私を助けてください

+1

これまでに何を試しましたか? – Aleksej

答えて

-1

あなたは支払った上で、各INSERT/UPDATE後に呼び出すストアドプロシージャ/クエリを作成することができます。

-- @UID is your UID from PAID when inserted/updated 
DECLARE @SUM int 
DECLARE @BILL int 

SELECT @SUM = SUM(INSTALLMENT) 
FROM PAID 
WHERE UID = @UID 
GROUP BY UID 

SELECT @BILL = AMOUNT 
FROM BORROW 
WHERE UID = @UID 

IF @BILL = @SUM 
BEGIN 
    INSERT INTO COMPLETED (UID, AMOUNT) 
    VALUES (@UID, @BILL) 
END 

必要なものに応じてこのクエリを変更する必要がありますが、基本的な考え方はここにあります。

EDIT:Oracle用のトリガー・イベントで独自の表にアクセスできないことはわかりませんでした。この特殊なケースでは、トリガーに行くことは不可能だと思われます。

+0

OPはOracle PL/SQLを求めました。 Oracleでは、行レベルのトリガーは独自のテーブルを照会できません。この問題を回避しようとする試みは、マルチユーザー・システムで読取り一貫性の問題を引き起こす傾向があります。 –

+0

@WilliamRobertsonその後、あなたは解決策2のために行くことができます – Lostblue

関連する問題