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