Prak 3.5 Function Trigger
Prak 3.5 Function Trigger
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 ;
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()
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);
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.
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 :
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 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 ;
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 ;