home *** CD-ROM | disk | FTP | other *** search
/ PC World 1999 May / PCWorld_1999-05_cd.bin / software / Vyzkuste / inprise / INTRBASE_55 / DOC / TUTORIAL / TRIGGERS.SQL < prev    next >
Text File  |  1998-10-18  |  2KB  |  75 lines

  1. /*  Triggers.sql
  2.     THIS FILE IS FOR USE WITH THE TUTORIAL. IT IS NOT MEANT
  3.     TO BE USED WITHOUT REFERRING TO THE ACCOMPANYING TEXT.
  4.  
  5. *   You must change the parameters below to match your
  6. *   server name, database name, username, and password.
  7. *
  8. *   This file defines domains for the TUTORIAL database.
  9. */
  10.  
  11. CONNECT 'c:\interbase5\tutorial\tutorial.gdb'
  12. USER 'TUTOR' PASSWORD 'tutor4ib';
  13.  
  14.  
  15. /*
  16. *  Create triggers for employee database
  17. *  You create the emp_no_gen generator and the set_emp_no
  18. *  trigger as an exercise in the tutorial.
  19. *
  20. *  Create the emp_no_gen generator:
  21. *
  22. *  CREATE GENERATOR emp_no_gen;
  23. *  SET GENERATOR emp_no_gen to 145;
  24. *
  25. * Create the set_emp_no  trigger to add unique customer number:
  26. *
  27. * SET TERM !! ;
  28. * CREATE TRIGGER set_emp_no FOR employee
  29. * BEFORE INSERT AS
  30. * BEGIN
  31. *     new.emp_no = gen_id(emp_no_gen, 1);
  32. * END !!
  33. * SET TERM ; !!
  34. */
  35.  
  36. /* Create Generator for SET_CUST_NO trigger */
  37.  
  38. CREATE GENERATOR cust_no_gen;
  39. SET GENERATOR cust_no_gen to 1015;
  40.  
  41. /* Create trigger to add unique customer number */
  42.  
  43. SET TERM !! ;
  44. CREATE TRIGGER set_cust_no FOR customer
  45. BEFORE INSERT AS
  46. BEGIN
  47.     new.cust_no = gen_id(cust_no_gen, 1);
  48. END !!
  49.  
  50. /* Create trigger to maintain SALARY_HISTORY table */
  51.  
  52. CREATE TRIGGER save_salary_change FOR employee
  53. AFTER UPDATE AS
  54. BEGIN
  55.     IF (old.salary <> new.salary) THEN
  56.         INSERT INTO salary_history
  57.             (emp_no, change_date, updater_id, old_salary, percent_change)
  58.         VALUES (
  59.             old.emp_no,
  60.             'now',
  61.             user,
  62.             old.salary,
  63.             (new.salary - old.salary) * 100 / old.salary);
  64. END !!
  65.  
  66.  
  67. CREATE TRIGGER post_new_order FOR sales
  68. AFTER INSERT AS
  69. BEGIN
  70.     POST_EVENT 'new_order';
  71. END !!
  72. SET TERM ; !!
  73.  
  74. 
  75.