Tuesday, June 5, 2007

Trigger di MySQL - Part 1

--Trigger--
Suatu stored prosedure yang dijalankan sesudah atau pada saat terjadinya modifikasi data. Digunakan untuk menjaga integritas data. beberapa sintak :
- update(modifikasi), insert (utk proses insert), delete(menghapus data)
- before/after : apakah setelah atau pada saat DML dieksekusi
- for each row : diberlakukan untuk semua row
contoh:
buat dua databases sederhana :

CREATE TABLE siswa(
nis int(10) NOT NULL,
nama varchar(30) NOT NULL
)
CREATE TABLE wali(
nis int(10) NOT NULL,
namaWali varchar(30) NOT NULL
)


insert table--

-siswa
nis nama
2 budi
3 alif
4 didin
-wali

nis namaWali
2 udin
3 aldo
4 riki

1.Trigger delete
delimiter &&
create trigger hapuswali
before delete on siswa
for each row
begin
delete from wali where nis = OLD.nis; //OLD.nis merupaka nis yang didelete pada table siswa
end;
&&
delimiter ;
- elsekusi delete
delete from siswa where nis = 2;
--output--
- siswa
nis nama
3 alif
4 didin


- wali
nis namaWali
3 aldo
4 riki

2. Trigger update
delimiter &&
create trigger tambahsiswa
after update on siswa
for each row
begin
update nis from wali set nis = new.nis where nis = old.nis;
end;
&&
delimiter ;

siswa set nis = 12 where nis = 3;

output--
-siswa
nis nama
12 alif
4 didin

-wali
nis namaWali
12 aldo
4 riki

3. Trigger insert
Untuk insert kita akan buat suatu 2 table sederhana :
create table a (
bil int not null
)
create table b (
bil2 int not null
)
- trigger insert
delimiter &&
create trigger tambahdata
after insert on a
for each row
begin
insert into b values (2*new.bil);
end;
&&
delimiter ;


insert into a values (1),(2),(3),(4),(5);

output
- a
bil
1
2
3
4
5
- b
bil2
2
4
6
8
10