解答例 - 実習課題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;

