目次へ

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

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp