###前提・実現したいこと
MYSQLでいろんなテーブルにトリガーを仕込みたいのですが
同じ設定なので、同じ処理を行うストアドを作成し、
コールするようにしたいと考えています。
###概要
いろんな更新系テーブルに使用フラグ、登録実行日時、登録実行ユーザー、
最終更新日時、最終更新ユーザー、削除日時、削除ユーザーを設けており、
使用フラグのON・OFFの切り替えで、削除日時、削除ユーザーを設定したいと考えています。
CREATE TABLE `table_a` ( ・・・ `INUSE` TINYINT(1) NULL DEFAULT NULL COMMENT '使用フラグ', `INSDATE` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '登録日', `LUPDATE` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最終更新日', `DELDATE` DATETIME NULL DEFAULT NULL COMMENT '削除日', `INSUSER` VARCHAR(20) NULL DEFAULT NULL COMMENT '登録担当者', `LUPUSER` VARCHAR(20) NULL DEFAULT NULL COMMENT '最終更新担当者', `DELUSER` VARCHAR(20) NULL DEFAULT NULL COMMENT '削除担当者', PRIMARY KEY (`T_ID`) )
挿入直前トリガー
#削除時の対応 CASE WHEN NEW.INUSE = 0 OR NEW.INUSE is NULL THEN SET NEW.DELDATE = CURRENT_TIMESTAMP; SET NEW.DELUSER = NEW.LUPUSER; WHEN NEW.INUSE = 1 THEN SET NEW.DELDATE = NULL; SET NEW.DELUSER = NULL; ELSE BEGIN END; END CASE
更新直前トリガー
#削除時の対応 CASE WHEN OLD.INUSE = 1 AND ( NEW.INUSE = 0 OR NEW.INUSE is NULL) THEN SET NEW.DELDATE = CURRENT_TIMESTAMP; SET NEW.DELUSER = NEW.LUPUSER; WHEN ( NEW.INUSE = 0 OR NEW.INUSE is NULL) AND NEW.INUSE = 1 THEN SET NEW.DELDATE = NULL; SET NEW.DELUSER = NULL; ELSE BEGIN END; END CASE
この挿入時トリガー、更新時トリガーをストアドにするには、引数をどう指定すればいいのでしょうか?更新系テーブルが10個あれば10個、挿入トリガー、更新トリガーが必要になるので、ストアドは1本にまとめなくても、せめて2本にまとめられるなら、御の字です。
できるなら、トリガーにNEW,OLDのデータすべてを渡したいのですが・・・。
この質問の実現可否を含め、回答できる方がいらっしゃいましたら是非教えていただけるとありがたいです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー