Cara menggunakan trigger mysql after insert

Masih dalam pembahasan tentang mysql. Kali ini rumah code akan belajar tentang bagaimana caranya membuat trigger pada mysql database server. Tutorial ini akan menggunakan trigger dengan event AFTER, BEFORE - INSERT,  UPDATE, DELETE.

Trigger adalah sebuah prosedur yang di eksekusi pada waktu ( AFTER, BEFORE ) dan pada event ( INSERT, UPDATE, DELETE ).

Query dasar trigger

CREATE TRIGGER 'nama_trigger' 
WAKTU EVENT ON 'nama_tabel'
FOR EACH ROW SET new.artikel_tgl = now()
BEGIN
     Query yang akan di eksekusi
END;

Baca Juga : Tutorial subquery alias dan fungsi pada mysql

kalau bingung saya akan jelaskan dengan contoh pada database penjualan 

CREATE TABLE `barang` (
  `barang_id` double NOT NULL,
  `barang_nama` varchar(30) NOT NULL,
  `barang_qty` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--
-- Dumping data for table `barang`
--

INSERT INTO `barang` (`barang_id`, `barang_nama`, `barang_qty`) VALUES
(1, 'Tas Wanita', 100),
(2, 'Tas Pria', 100),
(3, 'Baju Wanita', 100),
(4, 'Baju Pria', 100),
(5, 'Celana Wanita', 100),
(6, 'Celana Pria', 100),
(7, 'Kaos Oblong', 100),
(8, 'Kemja Batik', 100);

-- --------------------------------------------------------

--
-- Table structure for table `transaksi`
--

CREATE TABLE `transaksi` (
  `trx_id` double NOT NULL,
  `user_id` varchar(20) NOT NULL,
  `trx_tgl` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


-- --------------------------------------------------------

--
-- Table structure for table `trasaksid`
--

CREATE TABLE `trasaksid` (
  `trxD_id` double NOT NULL,
  `trx_id` double NOT NULL,
  `barang_id` double NOT NULL,
  `trx_qty` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- --------------------------------------------------------

--
-- Table structure for table `user`
--

CREATE TABLE `user` (
  `user_id` varchar(20) NOT NULL,
  `user_password` tinytext DEFAULT NULL,
  `user_email` varchar(50) DEFAULT NULL,
  `user_alias` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

--
-- Dumping data for table `user`
--

INSERT INTO `user` (`user_id`, `user_password`, `user_email`, `user_alias`) VALUES
('admin', '21232f297a57a5a743894a0e4a801fc3', '[email protected]', 'Admin'),
('adrian', '8c4205ec33d8f6caeaaaa0c10a14138c', '[email protected]', 'Adriana'),
('andri', '6bd3108684ccc9dfd40b126877f850b0', '[email protected]', 'Andriana'),
('ardi', '0264391c340e4d3cbba430cee7836eaf', '[email protected]', 'Ardianan'),
('bagas', 'ee776a18253721efe8a62e4abd29dc47', '[email protected]', 'Bagas Adi'),
('bima', '7fcba392d4dcca33791a44cd892b2112', '[email protected]', 'Bima Satria'),
('herdi', '70ef423c063dfa178e58114b90052a9b', '[email protected]', 'Herdianan'),
('heri', '6812af90c6a1bbec134e323d7e70587b', '[email protected]', 'Heriana'),
('lili', '777bbb7869ae8193249f8ff7d3e59afe', '[email protected]', 'Lilianan'),
('novi', '832f72b7a13b2cedcfb108603a10e2a6', '[email protected]', 'Noviana'),
('rudi', '1755e8df56655122206c7c1d16b1c7e3', '[email protected]', 'Rudiana'),
('wisnu', '202cb962ac59075b964b07152d234b70', '[email protected]', 'wisnu i'),
('yuli', '4a01a05a350e1c7710c989f1211245a8', '[email protected]', 'Yulianan');

Baca Juga : Perintah dasar Mysql

Setelah selesai membuat database dan tabel di atas barulah kita dapat melanjutkan mysql trigger tutorial

Baca Juga : Belajar Query Dasar Mysql

Contoh MySQL Trigger Before Insert

CREATE TRIGGER `tanggal` BEFORE INSERT ON `transaksi` FOR EACH ROW SET new.trx_tgl = now()

Contoh Mysql trigger di atas bersfungsi untuk memberikan nilai pada field trx_tanggal setelah lita menambahkan data pada tabel transaksi

Contoh MySQL Trigger Before Update

CREATE TRIGGER `tanggal1` BEFORE UPDATE ON `transaksi` FOR EACH ROW SET new.trx_tgl = now()

trigger di atas memiliki fungsi yang sama cuman triger ini dilakukan sebelum kita mengupdate data pada tabel transaksi

Contoh MySQL Trigger After Insert

Trigger after insert ini akan saya buat sedikit rumit karena saya akan menambahkan variabel pada trigger

Mendeklarasikan variabel pada trigger

    DECLARE oval INT(10);
    DECLARE nval INT(10);

membuat nilai pada variabel trigger 

saya akan mengisi variabel oval dengan mengambil nilai barang_qty dari tabel barang, sedangkan variabel nval adalah nilai dari variabel oval dikurangi nilai dari data yang kita masukan dari field trx_qty

    SET oval  = (select barang_qty from barang where barang_id = new.barang_id);
    SET nval = oval - new.trx_qty;

Query Yang akan di eksekusi pada triger ini adalah mengupdate tabel lain yaitu tabel barrang setelah kita menambahkan data pada tabel transaksid

    UPDATE `barang` 
	SET `barang_qty` = nval  
	WHERE CONCAT(`barang`.`barang_id`) = new.barang_id;

Perintah keseluruhan dari triger after insert ini adalah

CREATE TRIGGER `update_barang` AFTER INSERT ON `trasaksid` FOR EACH ROW BEGIN
    DECLARE oval INT(10);
    DECLARE nval INT(10);
    SET oval  = (select barang_qty from barang where barang_id = new.barang_id);
    SET nval = oval - new.trx_qty;
    UPDATE `barang` 
	SET `barang_qty` = nval  
	WHERE CONCAT(`barang`.`barang_id`) = new.barang_id;
END

Contoh MySQL trigger after delete

CREATE TRIGGER `hapus` AFTER DELETE ON `transaksi` FOR EACH ROW DELETE FROM `transaksid` WHERE `transaksid`.`	trx_id` = old.trx_id;

demikian lah tutorial trigger mysql ini semoga dapat membantu teman teman dalam memahami tentang trigger pada mysql.

Kapan kita menggunakan trigger?

Kapan kita menggunakan Trigger? Idealnya, Trigger harus dipertimbangkan ketika kode ini digunakan untuk mengotomatisasi perubahan yang spesifik untuk database atau pengelolaan data. Log audit adalah contoh penerapan dari Trigger.

Apa peristiwa yang menyebabkan trigger dilakukan?

trigger_event : merupakan event atau peristiwa yang menyebabkan trigger dilakukan.

Apakah yang di sebut trigger dalam MySQL?

TRIGGER adalah kumpulan kode SQL yang berjalan secara otomatis untuk mengeksekusi perintah INSERT, UPDATE, DELETE.

Apa itu trigger dalam pemrograman?

Trigger adalah prosedur tersimpan pada Microsoft SQL Server yang secara otomatis dijalankan apabila data di dalam tabel berubah karena eksekusi perintah SQL (INSERT, UPDATE atau DELETE). Mengupdate tabel-tabel lain jika ada perubahan (Insert, update atau delete) pada tabel yang sedang aktif.