Professional Documents
Culture Documents
Saturday, April 19, 2014: Contoh-Contoh TRIGGER Dalam Mysql
Saturday, April 19, 2014: Contoh-Contoh TRIGGER Dalam Mysql
DELIMITER //
CREATE TRIGGER tbl_beli_subt_upd AFTER UPDATE ON tbl_beli
FOR EACH ROW
BEGIN
END;
//
DELIMITER;
DELIMITER //
CREATE TRIGGER upd_sbt AFTER INSERT ON tbl_beli
FOR EACH ROW
BEGIN
set @id_beli = new.id_beli;
set @harga_beli = new.harga_beli;
set @jumlah = new.jumlah;
set @sub_total = @harga_beli * @jumlah;
UPDATE tbl_beli SET sub_total = @sub_total WHERE id_beli = @id_beli
END;
//
DELIMITER;
DELIMITER //
CREATE TRIGGER trig_transaksi after INSERT ON tbl_beli FOR EACH ROW
BEGIN
INSERT INTO tbl_gudang (id_barang) value (NEW.id_barang);
END
//
DELIMITER ;
DELIMITER //
CREATE TRIGGER trig_transaksi after INSERT ON tbl_beli FOR EACH ROW
BEGIN
END
//
DELIMITER ;
DELIMITER //
CREATE TRIGGER trig_transaksi BEFORE UPDATE ON tbl_beli FOR EACH ROW
BEGIN
declare x int;
declare n int;
set x = 0;
SET n = new.jumlah;
ulang : LOOP
set x = x + 1;
if x > n then leave ulang; end if;
INSERT INTO tbl_gudang (id_barang) value (NEW.id_barang);
END LOOP ulang;
END
//
DELIMITER ;
DELIMITER //
CREATE TRIGGER post_beli BEFORE UPDATE ON tbl_beli FOR EACH ROW
BEGIN
declare x int;
declare n int;
set x = 0;
SET n = new.jumlah;
if new.status = 1 then
ulang : LOOP
set x = x + 1;
if x > n then leave ulang; end if;
INSERT INTO tbl_gudang
(id_barang,tanggal_kedaluarsa,id_cabang,id_beli,harga_beli,laba,ppn,harga_jual
) value
(new.id_barang,new.tanggal_kedaluarsa,'GDG',new.id_beli,new.harga_beli,new.lab
a,new.ppn,new.harga_jual);
END LOOP ulang;
end if;
END
//
DELIMITER ;
====================================================================
drop trigger post_beli;
DELIMITER //
CREATE TRIGGER post_beli BEFORE UPDATE ON tbl_beli FOR EACH ROW
BEGIN
declare x int;
declare n int;
set x = 0;
SET n = new.jumlah;
if new.status = 1 then
ulang : LOOP
set x = x + 1;
if x > n then leave ulang; end if;
INSERT INTO tbl_stok
(id_barang,id_beli,harga_beli,laba,ppn,harga_jual,id_cabang) value
(new.id_barang,new.id_beli,new.harga_beli,new.laba,new.ppn,new.harga_jual,new.
id_cabang);
END LOOP ulang;
end if;
END
//
DELIMITER ;
====================================================================
drop trigger post_beli_nota;
DELIMITER //
CREATE TRIGGER post_beli_nota AFTER INSERT ON tbl_beli FOR EACH ROW
BEGIN
INSERT INTO UPDATE (status) value
(new.id_barang,new.id_beli,new.harga_beli,new.laba,new.ppn,new.harga_jual,new.
id_cabang);
END
//
DELIMITER ;
====================================================================
drop trigger post_jual;
DELIMITER //
CREATE TRIGGER post_jual AFTER INSERT ON tbl_jual FOR EACH ROW
BEGIN
declare n int;
SET n = new.jumlah;
UPDATE tbl_stok SET id_jual=new.id_jual
WHERE id_stok IN (
SELECT id_stok FROM (
SELECT id_stok FROM tbl_stok
WHERE
id_jual is NULL AND id_barang = new.id_barang
ORDER BY id_stok ASC
LIMIT 0, n
) tmp
);
END
//
DELIMITER ;
====================================================================
drop trigger post_jual_del;
DELIMITER //
CREATE TRIGGER post_jual_del AFTER DELETE ON tbl_jual FOR EACH ROW
BEGIN
UPDATE tbl_stok SET id_jual=NULL WHERE id_jual = old.id_jual;
END
//
DELIMITER ;
====================================================================
drop trigger post_jual_upd;
DELIMITER //
CREATE TRIGGER post_jual_upd AFTER UPDATE ON tbl_jual FOR EACH ROW
BEGIN
declare jumlah_lama int;
declare jumlah_baru int;
declare tambah int;
declare kurang int;
SET jumlah_lama = old.jumlah;
SET jumlah_baru = new.jumlah;
SET tambah = jumlah_baru - jumlah_lama;
SET kurang = jumlah_lama - jumlah_baru;
if jumlah_lama > jumlah_baru then
UPDATE tbl_stok SET id_jual=NULL
WHERE id_stok IN (
SELECT id_stok FROM (
SELECT id_stok FROM tbl_stok
WHERE
id_jual = old.id_jual AND id_barang = old.id_barang
ORDER BY id_stok DESC
LIMIT 0, kurang
) tmp
);
end if;
if jumlah_lama < jumlah_baru then
UPDATE tbl_stok SET id_jual=new.id_jual
WHERE id_stok IN (
SELECT id_stok FROM (
SELECT id_stok FROM tbl_stok
WHERE
id_jual is NULL AND id_barang = old.id_barang
ORDER BY id_stok ASC
LIMIT 0, tambah
) tmp
);
end if;
END
//
DELIMITER ;
====================================================================
drop trigger post_piutang_nota;
DELIMITER //
CREATE TRIGGER post_piutang_nota AFTER INSERT ON tbl_piutang_nota FOR EACH ROW
BEGIN
UPDATE tbl_piutang_bayar SET status = 1 WHERE id_piutang_nota =
new.id_piutang_nota;
End
//
DELIMITER ;
====================================================================
drop trigger post_hutang_nota;
DELIMITER //
CREATE TRIGGER post_hutang_nota AFTER INSERT ON tbl_hutang_nota FOR EACH ROW
BEGIN
UPDATE tbl_hutang_bayar SET status = 1 WHERE id_hutang_nota =
new.id_hutang_nota;
End
//
DELIMITER ;