Rahmadnet

Creating your first PostgreSQL trigger

Jul 30th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. --Membuat table santri
  2. create table santri
  3. (
  4.     id serial primary key,
  5.     first_name varchar (50) not null,
  6.     last_name varchar (50) not null,
  7.     address_santri varchar (50) not null
  8. )
  9.  
  10. --Membuat table audit_santri
  11. create table audit_santri
  12. (
  13.     id serial primary key,
  14.     id_santri int not null,
  15.     first_name varchar(50) not null,
  16.     last_name varchar(50) null,
  17.     change_on timestamp(6) not null
  18. )
  19.  
  20. --Memasukkan data table santri
  21. insert into santri (first_name, last_name, address_santri) values
  22. ('Rahmad', 'Nasution', 'Medan'),
  23. ('Wandi', 'Pratama', 'Prabumuli'),
  24. ('Muhammad', 'Andari', 'Sukabumi'),
  25. ('Rahmadi', 'Cahaya Putra', 'Jambi'),
  26. ('Wildan', 'Wildani', 'Bekasi'),
  27. ('Arif', 'Lutfi', 'Lampung'),
  28. ('Hafif', 'Albusyro', 'Jakarta'),
  29. ('Rafi', 'Bahru Risky', 'Jakarta');
  30.  
  31. --Membuat function trigger log_first_name
  32. create or replace function log_first_name_change()
  33.     returns trigger as
  34. $BODY$
  35. begin
  36.     if new.first_name <> old.first_name then
  37.         insert into audit_santri(id_santri, first_name, last_name, change_on)
  38.         values (old.id, old.first_name, old.last_name, now());
  39.     end if;
  40.     return new;
  41. end; $BODY$
  42. language plpgsql;
  43.  
  44. --Membuat trigger first_name_changes
  45. create trigger first_name_changes
  46.     before update
  47.     on santri
  48.     for each row
  49.     execute procedure log_first_name_change();
  50.  
  51.  
  52. --MengUpdate first_name_santri
  53. update santri
  54. set first_name = 'Wandi'
  55. where id = 2;
  56.  
  57. --Membuat function log_last_name_change
  58. create or replace function log_last_name_change()
  59.     returns trigger as
  60. $body$
  61. begin
  62.     if new.last_name <> old.last_name then
  63.         insert into audit_santri(id_santri, first_name,last_name, change_on)
  64.         values(old.id, old.first_name,old.last_name, now());
  65.     end if;
  66.     return new;
  67. end; $body$
  68. language plpgsql;
  69.  
  70. --Membuat trigger last_name_changes
  71. create trigger last_name_changes
  72.     before update
  73.     on santri
  74.     for each row
  75.     execute procedure log_last_name_change();
  76.  
  77. --Review table santri
  78. select * from santri
  79.  
  80.  
  81. --Review table audit_santri
  82. select * from audit_santri
  83.  
  84. --MengUpdate last_name_santri
  85. update santri
  86. set last_name = 'Wildani'
  87. where id = 5;
Advertisement
Add Comment
Please, Sign In to add comment