Mega Code Archive

 
Categories / Oracle PLSQL Tutorial / Trigger
 

Trigger for certain columns

SQL> SQL> CREATE TABLE game_player   2  (player_id    NUMBER,   3   game_id      NUMBER,   4   group_number NUMBER,   5   marked       VARCHAR2(1) DEFAULT 'N',   6   pcmac        VARCHAR2(1) DEFAULT 'N',   7   score        NUMBER,   8   CONSTRAINT game_player_pk   9   PRIMARY KEY (player_id, game_id, group_number)); Table created. SQL> SQL> CREATE TABLE game_player_audit   2  (player_id    NUMBER,   3   game_id      NUMBER,   4   group_number NUMBER,   5   old_marked   VARCHAR2(1),   6   new_marked   VARCHAR2(1),   7   old_pcmac    VARCHAR2(1),   8   new_pcmac    VARCHAR2(1),   9   old_score    NUMBER,  10   new_score    NUMBER,  11   change_date  DATE,  12   operation    VARCHAR2(6)); Table created. SQL> SQL> CREATE OR REPLACE TRIGGER audit_update   2  AFTER UPDATE OF marked, pcmac, SCORE ON game_player   3  REFERENCING OLD AS prior_to_cheat NEW AS after_cheat   4  FOR EACH ROW   5  WHEN ( prior_to_cheat.marked != after_cheat.marked OR   6         prior_to_cheat.pcmac != after_cheat.pcmac OR   7         prior_to_cheat.score != after_cheat.score )   8  BEGIN   9    INSERT INTO game_player_AUDIT(player_id,game_id,group_number,  10                            old_marked,new_marked,  11                            old_pcmac,new_pcmac,  12                            old_score,new_score,  13                            change_date,operation)  14    VALUES(:after_cheat.player_id,:after_cheat.game_id,:after_cheat.group_number,  15           :prior_to_cheat.marked,:after_cheat.marked,  16           :prior_to_cheat.pcmac,:after_cheat.pcmac,  17           :prior_to_cheat.score,:after_cheat.score,  18           SYSDATE,'UPDATE');  19  END;  20  / Trigger created. SQL> SQL> drop table game_player; Table dropped. SQL> SQL> drop table game_player_audit; Table dropped. SQL>