解答例 - 実習課題2 - 14.3 トリガーを用いた例
実習課題 2
以下の要求を満たすトリガーを定義しなさい。
- 販売管理データベースのテーブル accept_order にデータが追加されるたびに、別テーブルにそのデータから求められる支払い金額を書き込む。
- 別テーブルに書き込まれるデータは、受注番号と支払い金額とする。
- このトリガーの定義は ORACLE 上で行うものとする。
解答例
/* トリガーによって書き込まれるテーブルの定義 */ CREATE TABLE sales_log ( o_num CHAR(4) PRIMARY KEY, payment NUMBER, FOREIGN KEY (o_num) REFERENCES accept_order(o_num) ); CREATE TRIGGER sales_log_trig AFTER INSERT ON accept_order FOR EACH ROW BEGIN INSERT INTO sales_log SELECT :NEW.o_num, p.price * (100 - :NEW.dc_rate) / 100 + :NEW.option_price FROM product p WHERE :NEW.p_num = p.p_num; END;