目次へ

解答例 - 実習課題1 - 14.3 トリガーを用いた例

実習課題 1

以下の要求を満たすトリガーを定義しなさい。

  • データの入力時にパーセンテージで入力される数値を、テーブルにはその数値を 100 で割った値を入力したい。
  • テーブル及び必要となる関数は適宜定義すること。
  • このトリガーの定義は PorstgreSQL 上で行うものとする。

解答例

/*
 * タスク管理表 task
 *
 *    タスク番号  task_num    CHAR(4)   PRIMARY KEY
 *    タスク名    task_name   CHAR(20)
 *    達成度      achievement REAL
 */
CREATE TABLE task
(
   num         CHAR(4) PRIMARY KEY,
   name        CHAR(20),
   achievement REAL
);

/*
 * CONVERT_FUNC()
 *    タスク管理表の達成度への入力値を100で割る
 */
CREATE FUNCTION CONVERT_FUNC() RETURNS TRIGGER
  AS '
  BEGIN
    new.achievement := new.achievement / 100.0;
    RETURN new;
  END;
  '
  LANGUAGE 'plpgsql';

/*
 * タスク管理表へのINSERT/UPDATEに対するTRIGGERの定義
 */
CREATE TRIGGER CONVERT_TRIG
  BEFORE INSERT OR UPDATE
  ON task
  FOR EACH ROW
  EXECUTE PROCEDURE CONVERT_FUNC();

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp