Skip to content

Latest commit

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

trigger_table

Buat Database

make database trigger_table

Buat Table produk

CREATETABLE `produk` (
`id`int(11) NOT NULL,
`kode_produk`varchar(6) NOT NULL,
`nama_produk`varchar(100) NOT NULL,
`harga`int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTERTABLE`produk` ADD PRIMARY KEY (`id`);
ALTERTABLE`produk` MODIFY `id`int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
INSERT INTO`produk` (`id`, `kode_produk`, `nama_produk`, `harga`) VALUES
(1, 'BR001', 'SEMINGGU JAGO CODEIGNITER', 90000),
(2, 'BR002', 'SEMINGGU JAGO PHP MYSQL', 80000);

Buat Table log_harga_produk

CREATETABLE `log_harga_produk` (
`id`int(11) NOT NULL,
`kode_produk`varchar(6) NOT NULL,
`harga_lama`int(11) NOT NULL,
`harga_baru`int(11) NOT NULL,
`waktu_perubahan` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTERTABLE`log_harga_produk` ADD PRIMARY KEY (`id`);
ALTERTABLE`log_harga_produk` MODIFY `id`int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

Buat Trigger before_produk_update

DELIMITER $$
CREATETRIGGER `before_produk_update` BEFORE UPDATEON`produk` FOR EACH ROW BEGININSERT INTO log_harga_produk
set kode_produk =OLD.kode_produk,
harga_baru=new.harga,
harga_lama=old.harga,
waktu_perubahan = NOW(); END
$$
DELIMITER ;
  • Macam-macam Trigger
    • BEFORE INSERT – dijalankan ketika data di masukan ke dalam table.
    • AFTER INSERT – dijalankan setelah data masuk ke dalam table.
    • BEFORE UPDATE – dijalankan sebelum proses update data.
    • AFTER UPDATE – dijalankan setelah proses proses update data.
    • BEFORE DELETE – dijalankan sebelum proses delete data.
    • AFTER DELETE – dijalankan setelah proses delete data.

Coba Trigger

update produk set harga=90000WHERE kode_produk='BR001';
select*from log_harga_produk;

Cara Menampilkan List Trigger

SHOW TRIGGERS;

Cara Menghapus Trigger

DROPTRIGGER nama_trigger ;
//contoh implementasinya
DROPTRIGGER before_produk_update ;

Test Dengan Delete

CREATETABLE `produk_bc` (
`id_delete`int(11) NOT NULL,
`id`int(11) NOT NULL,
`kode_produk`varchar(6) NOT NULL,
`nama_produk`varchar(100) NOT NULL,
`harga`int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTERTABLE`produk_bc`
ADD PRIMARY KEY (`id_delete`);
ALTERTABLE`produk_bc`
MODIFY `id_delete`int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;
DELIMITER $$
CREATETRIGGERafter_produk_deleted AFTER DELETEON produk
FOR EACH ROW BEGININSERT INTO produk_bc SET id=OLD.id, kode_produk=OLD.kode_produk,
nama_produk=OLD.nama_produk,
harga=OLD.harga;
END$$
DELIMITER ;

Copyright 2021 M. Fadli Zein

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors