Trigger
Pada program kali ini kita akan membuat program dengan menggunakan trigger. Trigger adalah suatu objek dalam basis data yang terdapat pada bagian tabel. Trigger untuk menempatkan suatu prosedure berkaitan dengan perubahan pada isi tabel. Cara kerja trigger adalah merespon berkaitan dengan perintah DML (INSERT , UPDATE, DELETE) pada tabel.
Adapun jenis perubahan yang dijalankan dalam trigger adalah :
1. BEFORE INSERT on TABEL1 : menjalankan proses di dalamnya pada saat sebelum melakukan operasi INSERT di TABEL1
2. AFTER INSERT on TABEL menjalankan proses di dalamnya pada saat sesudah melakukan operasi INSERT di TABEL1
3. BEFORE UPDATE on TABEL1 menjalankan proses di dalamnya pada saat sebelum melakukan operasi UPDATE di TABEL1
4. AFTER UPDATE on TABEL1 menjalankan proses di dalamnya pada saat sesudah melakukan operasi UPDATE di TABEL1
5. BEFORE DELETE on TABEL1 : menjalankan proses di dalamnya pada saat sebelum melakukan operasi DELETE di TABEL1
6. AFTER DELETE on TABEL1 : menjalankan proses di dalamnya pada saat sesudah melakukan operasi DELETE di TABEL1
SQL pembuatan tabel dosen:
Create table dosen (nip_dosen char(10) primary key not null, nama_dosen char(20), jumlah_wali integer default 0 );
SQL pembuatan tabel mahasiswa:
Create table mahasiswa( nrp_mhs char(10) primary key not null, nama_mhs char(20), id_wali char(10) not null, foreign key (id_wali) references dosen(nip_dosen) );
Pada tabel dosen JUMLAH_WALI diatur dengan nilai awal default null atau 0. NIP_DOSEN merupakan primary key pada tabel dosen dan menjadi references di tabel mahasiswa dengan foreign key ID_WALI dan NRP_MHS sebagai primary key pada tabel mahasiswa. Untuk menjaga agar nilai-nilai derived attribute tetap benar, dapat dilakukan dengan menggunakan trigger. Event-event yang dapat mempengaruhi perubahan nilai dari jumlah_wali sebagai berikut:
1. INSERT mahasiswa baru
2. UPDATE mahasiswa dari id_wali satu ke id_wali yang lain
3. DELETE mahasiswa yang ada
Ketiga event diatas akan digabungkan menjadi satu dalam sebuah trigger dengan SQL sebagai berikut:
CREATE OR REPLACE TRIGGER nambah After
Begin
If inserting then Update dosen
Set jumlah_wali = jumlah_wali+1
Where nip_dosen = :new.id_wali;
End if;
If deleting then Update dosen
Set jumlah_wali = jumlah_wali-1
Where nip_dosen = ld.id_wali;
End if;
If updating then Begin Update dosen
Set jumlah_wali = jumlah_wali+1
Where nip_dosen = :new.id_wali;
Update dosen Set jumlah_wali = jumlah_wali-1
Where nip_dosen = ld.id_walil;
End;
End if;
End;
Nama trigger yaitu nambah. Event after menandakan bahwa trigger ini akan diaktifkan sekali setelah statement yang diinginkan dijalankan (INSERT, UPDATE, DELETE) pada tabel mahasiswa. Bila sebuah data di-insert-kan dalam tabel mahasiswa maka tabel dosen akan di update setelah perintahnya dijalankan dengan proses: set jumlah_wali = jumlah_wali+1 dengan syarat nip_dosen = :new.id_wali. Bila data di delete, maka proses yang akan dijalankan oleh trigger setelah proses tersebut adalah: set jumlah_wali = jumlah_wali-1 dengan syarat nip_dosen = ld.id_wali. Bila data update, maka proses yang akan dilakukan oleh trigger yaitu menambahkan data kemudian menghapus data yang lama.
Pada program kali ini kita akan membuat program dengan menggunakan trigger. Trigger adalah suatu objek dalam basis data yang terdapat pada bagian tabel. Trigger untuk menempatkan suatu prosedure berkaitan dengan perubahan pada isi tabel. Cara kerja trigger adalah merespon berkaitan dengan perintah DML (INSERT , UPDATE, DELETE) pada tabel.
Adapun jenis perubahan yang dijalankan dalam trigger adalah :
1. BEFORE INSERT on TABEL1 : menjalankan proses di dalamnya pada saat sebelum melakukan operasi INSERT di TABEL1
2. AFTER INSERT on TABEL menjalankan proses di dalamnya pada saat sesudah melakukan operasi INSERT di TABEL1
3. BEFORE UPDATE on TABEL1 menjalankan proses di dalamnya pada saat sebelum melakukan operasi UPDATE di TABEL1
4. AFTER UPDATE on TABEL1 menjalankan proses di dalamnya pada saat sesudah melakukan operasi UPDATE di TABEL1
5. BEFORE DELETE on TABEL1 : menjalankan proses di dalamnya pada saat sebelum melakukan operasi DELETE di TABEL1
6. AFTER DELETE on TABEL1 : menjalankan proses di dalamnya pada saat sesudah melakukan operasi DELETE di TABEL1
SQL pembuatan tabel dosen:
Create table dosen (nip_dosen char(10) primary key not null, nama_dosen char(20), jumlah_wali integer default 0 );
SQL pembuatan tabel mahasiswa:
Create table mahasiswa( nrp_mhs char(10) primary key not null, nama_mhs char(20), id_wali char(10) not null, foreign key (id_wali) references dosen(nip_dosen) );
Pada tabel dosen JUMLAH_WALI diatur dengan nilai awal default null atau 0. NIP_DOSEN merupakan primary key pada tabel dosen dan menjadi references di tabel mahasiswa dengan foreign key ID_WALI dan NRP_MHS sebagai primary key pada tabel mahasiswa. Untuk menjaga agar nilai-nilai derived attribute tetap benar, dapat dilakukan dengan menggunakan trigger. Event-event yang dapat mempengaruhi perubahan nilai dari jumlah_wali sebagai berikut:
1. INSERT mahasiswa baru
2. UPDATE mahasiswa dari id_wali satu ke id_wali yang lain
3. DELETE mahasiswa yang ada
Ketiga event diatas akan digabungkan menjadi satu dalam sebuah trigger dengan SQL sebagai berikut:
CREATE OR REPLACE TRIGGER nambah After
Begin
If inserting then Update dosen
Set jumlah_wali = jumlah_wali+1
Where nip_dosen = :new.id_wali;
End if;
If deleting then Update dosen
Set jumlah_wali = jumlah_wali-1
Where nip_dosen = ld.id_wali;
End if;
If updating then Begin Update dosen
Set jumlah_wali = jumlah_wali+1
Where nip_dosen = :new.id_wali;
Update dosen Set jumlah_wali = jumlah_wali-1
Where nip_dosen = ld.id_walil;
End;
End if;
End;
Nama trigger yaitu nambah. Event after menandakan bahwa trigger ini akan diaktifkan sekali setelah statement yang diinginkan dijalankan (INSERT, UPDATE, DELETE) pada tabel mahasiswa. Bila sebuah data di-insert-kan dalam tabel mahasiswa maka tabel dosen akan di update setelah perintahnya dijalankan dengan proses: set jumlah_wali = jumlah_wali+1 dengan syarat nip_dosen = :new.id_wali. Bila data di delete, maka proses yang akan dijalankan oleh trigger setelah proses tersebut adalah: set jumlah_wali = jumlah_wali-1 dengan syarat nip_dosen = ld.id_wali. Bila data update, maka proses yang akan dilakukan oleh trigger yaitu menambahkan data kemudian menghapus data yang lama.
Tidak ada komentar:
Posting Komentar