0% menganggap dokumen ini bermanfaat (0 suara)
45 tayangan4 halaman

Prak 3.5 Function Trigger

Fungsi dalam bahasa pemrograman digunakan untuk mengenkapsulasi logika yang sering digunakan dan memanggilnya tanpa perlu menulis ulang kode, sedangkan trigger secara otomatis mengeksekusi prosedur tertentu sebagai respon terhadap perubahan data di database. Keduanya bermanfaat untuk mengelola dan mengontrol alur program.

Diunggah oleh

mawan128
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
45 tayangan4 halaman

Prak 3.5 Function Trigger

Fungsi dalam bahasa pemrograman digunakan untuk mengenkapsulasi logika yang sering digunakan dan memanggilnya tanpa perlu menulis ulang kode, sedangkan trigger secara otomatis mengeksekusi prosedur tertentu sebagai respon terhadap perubahan data di database. Keduanya bermanfaat untuk mengelola dan mengontrol alur program.

Diunggah oleh

mawan128
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 4

FUNCTION

Function dalam bahasa pemrograman adalah sebuah subrutin yang digunakan untuk mengenkapsulasi
logika yang sering digunakan. Dengan function, kode program yang membutuhkan logika seperti
terdapat dalam function tidak perlu menuliskan ulang akan tetapi cukup memanggil function tersebut.
Perbedaan function dengan store procedure adalah function memberikan nilai keluaran sementara
store procedure tidak.
Jenis function :
 Built-in Functions
Merupakan function yang disediakan untuk melakukan suatu operasi tertentu. Misalkan fungsi
aggregate, fungsi string, fungsi tanggal, fungsi matematika
 User-defined Functions
Merupakan function yang didefinisikan sendiri oleh pengguna.

Syntax :
DELIMITER $$
CREATE FUNCTION function_name(
param1,
param2,…
)
RETURNS datatype
[NOT] DETERMINISTIC
BEGIN
-- statements
END$$
DELIMITER ;

Contoh 1 Menampilkan level Kasir


Create function
DELIMITER $$
CREATE FUNCTION FClevelKasir(kd char(5))
RETURNS varchar(15)
DETERMINISTIC
BEGIN
DECLARE hasil varchar(15);
DECLARE lvks char(2);
SELECT level_kasir into lvks from kasir where kd_kasir=kd;
IF lvks='AK' THEN
set hasil='ADMIN KASIR';
ELSE
set hasil='STAF KASIR';
END IF;
RETURN(hasil);
END$$
DELIMITER ;

Pemanggilan function
SELECT nama_kasir,FClevelKasir(kd_kasir) FROM 'kasir'
Contoh 2 membuat kodepelangganbaru
Create function
DELIMITER $$
CREATE FUNCTION FCKodeBaruPelanggan()
RETURNS char(5)
DETERMINISTIC
BEGIN
DECLARE akhir,baru int;
DECLARE kdbaru char(5);
SELECT max(right(kd_pelanggan,4)) into akhir from pelanggan;
set baru=akhir+1;
set kdbaru=concat('P',right(CONCAT('000',baru),4));
RETURN(kdbaru);
END$$
DELIMITER ;

Pemanggilan function
SELECT FCKodeBaruPelanggan()

insert into pelanggan values (FCKodeBaruPelanggan(),'Annisa','Yogya','0854876265')

Contoh 3 generated NIM


Membuat tabel
Create table mhs(nim char(10) primary key,nama varchar(30));

Masukkan sampling data


insert into mhs values('20.12.2345','andrea');
insert into mhs values('20.12.2350','boy');
insert into mhs values('20.11.0099','tiara');

Output diharapkan
FcNimBaru(2021,'12') >> 21.12.2351
FcNimBaru(2021,'11') >> 21.11.0100
FcNimBaru(2021,'13') >> 21.13.0001

Function
DELIMITER |
CREATE FUNCTION FCNIMBaru(_th int,_prodi char(2))
RETURNS char(10)
DETERMINISTIC
BEGIN
DECLARE _akhir,_baru int;
DECLARE _kdbaru char(10);

SELECT ifnull(max(right(nim,4)),0) into _akhir from mhs


where substring(nim,4,2)=_prodi;
if _akhir=9999 then
set _akhir=0;
end if;
set _baru=_akhir+1;
set _kdbaru=concat(right(_th,2),'.',_prodi,'.',right(CONCAT('000',_baru),4));
RETURN (_kdbaru);
END |
DELIMITER ;

Testing function
select FCNIMBaru(2021,'12');
select FCNIMBaru(2021,'11')
select FCNIMBaru(2021,'13');
Gunakan function saat input data mhs baru
insert into mhs values(FCNIMBaru(2021,'12'),'mark');
insert into mhs values(FCNIMBaru(2021,'13'),'indra');

TRIGGER

Trigger adalah prosedur yang secara otomatis dijalankan sebagai respon terhadap perubahan yang telah
dilakukan pada database, dan biasanya ditentukan oleh DBA. Sebuah database memiliki sekumpulan
trigger yang telah digabung disebut active database.

Deskripsi trigger terdiri dari tiga bagian :


 Event : Perubahan database yang mengaktifkan trigger
 Condition : Query atau tes yang berjalan ketika tigger sedang diaktifkan
 Action : Sebuah procedure yang dieksekusi ketika trigger diaktifkan dan persyaratannya
bernilai benar.

Trigger dapat dianggap sebagai daemon yang memonitor database, dan dieksekusi ketika database
dimodifikasi dengan suatu cara yang sesuai dengan spesifikasi event. Pernyataan insert, delete atau
update dapat mengaktifkan trigger, tanpa mempertimbangkan pengguna mana atau aplikasi mana
yang meminta pernyataan pengaktifan. Pengguna bahkan mungkin tidak sadar bahwa trigger telah
dieksekusi sebagai efek samping dari program mereka.
Condition pada trigger dapat merupakan pernyataan true/false atau sebuah query. Query
diinterpretasikan sebagai true jika set jawaban tidak kosong dan false jika query tidak memiliki jawaban.
Jika bagian persyaratan mengevaluasi true, maka tindakan yang berhubungan dengan trigger dieksekusi.

Syntax :
CREATE TRIGGER trigger_name
trigger_time trigger_event
ON tbl_name FOR EACH ROW
trigger_body

Keterangan :

 trigger_name : nama trigger.


 trigger_time : kapan kita mengeksekusi trigger, apakah sebelum atau sesudah perubahan pada row data
table. Jadi pilihannya adalah AFTER atau BEFORE.
 trigger_event : merupakan event atau peristiwa yang menyebabkan trigger dilakukan. Pilihan event
tersebut adalah INSERT, UPDATE, DELETE.
 tbl_name : nama table.
 trigger_body : statement-statement perintah SQL yang akan dilakukan. Jika perintahnya lebih dari satu
maka gunakan dalam blok statement BEGIN ... END.
 Jika DEFINER dispesifikasikan maka kita memutuskan trigger tersebut dijalankan hanya oleh user tertentu
(dalam format penulisan user@host). Jika tidak dispesifikasikan, maka user yang melakukan perubahan
(CURRENT_USER) adalah pilihan default.

Referensi "OLD" dan "NEW"

Karena trigger digunakan pada saat terjadi perubahan row data, maka kita perlu referensi ke row sebelum dan
sesudah perubahan. Untuk ini ada dua alias yang berfungsi untuk hal tersebut yaitu OLD dan NEW.
Sesuai namanya, OLD digunakan untuk referensi sebelum perubahan dan NEW untuk referensi sesudah perubahan.

Contoh 1 Trigger untuk mengupdate stok barang saat dijual


DELIMITER |
CREATE TRIGGER tgbrgterjual AFTER INSERT
ON detail_nota FOR EACH ROW
BEGIN
UPDATE BARANG SET STOK=STOK-NEW.jumlah_barang
WHERE kode_barang=NEW.kd_barang;
END;
|
DELIMITER ;

Contoh 2 Trigger untuk mengupdate stok barang saat batal jual (hapus detailnota)

DELIMITER |
CREATE TRIGGER tgbrgbataljual AFTER DELETE
ON detail_nota FOR EACH ROW
BEGIN
UPDATE BARANG SET STOK=STOK+OLD.jumlah_barang
WHERE kode_barang=OLD.kd_barang;
END;
|
DELIMITER ;

Contoh 3 Trigger untuk mengupdate stok barang saat update detailnota

DELIMITER |
CREATE TRIGGER tgbrgbataljual AFTER DELETE
ON detail_nota FOR EACH ROW
BEGIN
UPDATE BARANG SET STOK=STOK+OLD.jumlah_barang
WHERE kode_barang=OLD.kd_barang;
UPDATE BARANG SET STOK=STOK-NEW.jumlah_barang
WHERE kode_barang=NEW.kd_barang;

END;
|
DELIMITER ;

Anda mungkin juga menyukai