2017-01-16 3 views
0

3つの列(ファイル、qty、qty_total)を持つテストテーブルがあります。たとえば、insert into test_table (file,qty) VALUS (A,5);のように複数の行を入力します。私がコミットしたいのは、qtyから値を取り出してqty_totalに追加するトリガーです。この例で示すように、この値は更新されます。 Update test_table set qty = 10 where file = A;これでqty_totalは15になりました。ありがとうPSQLトリガーを使用して同じ行の別の値に行の値を追加します。

答えて

0

これを解決するために管理しました。私は RETURNSが LANGUAGE 'plpgsqlが' コスト100.0 VOLATILE $ BODY $

BEGIN 
IF TG_OP = 'UPDATE' THEN 
NEW."total" := (OLD.total + NEW.col2); 
RETURN NEW; 
ELSE 
NEW."total" := NEW.col2; 
RETURN NEW; 
END IF; 

END AS を漏れ止めないでトリガー)トリガー機能を作成し、 `(FUNCTIONのpublic.qty_totalを作成します。

$ BODY $;

ALTER FUNCTION public.qty_total() OWNER TO POSTGRES;これはトリガーCREATE TRIGGER qty_trigger BEFORE INSERT OR UPDATE ON public.test FOR EACH ROW EXECUTE PROCEDURE qty_total();によって呼び出されました。新しいコードと値を挿入すると、値が合計にコピーされ、更新時に値が合計に追加され、新しいqty_totalがあります。これは最高のエラーをキャッチすることはできませんが、私はPHPからデータを渡しているので、私はエラーがキャッチされ、削除されていることを確認して満足しています。

関連する問題