1. total_harga langsung dikalikan(x)
ini code triggernya
1. total_harga langsung dikalikan(x)
ini code triggernya
Trigger adalah sebuah alat otomatis dalam database yang "terpicu" atau dijalankan setiap kali ada perubahan data tertentu. Jadi, jika kamu melakukan INSERT, UPDATE, atau DELETE pada tabel, trigger bisa langsung dijalankan untuk melakukan tugas lain secara otomatis, seperti memvalidasi data atau mengupdate tabel lain.
Pemicu (Event): Ini adalah peristiwa yang memicu trigger untuk dijalankan. Misalnya, INSERT berarti trigger akan dijalankan ketika ada data yang ditambahkan ke tabel.
Waktu Eksekusi: Trigger bisa dijalankan sebelum perubahan terjadi (BEFORE) atau setelah perubahan terjadi (AFTER).
Logika dalam Trigger: Setelah pemicu terjadi, trigger akan menjalankan beberapa logika, seperti memeriksa data, mengupdate kolom lain, atau mencatat perubahan ke tabel audit.
Referensi Data: Trigger bisa mengakses data yang diubah dengan menggunakan NEW (untuk data yang baru) dan OLD (untuk data yang lama).
Bayangkan kamu memiliki tabel stok_barang, dan kamu ingin secara otomatis mengurangi jumlah stok barang ketika ada penjualan. Setiap kali data penjualan dimasukkan ke dalam tabel penjualan, kita ingin mengurangi stok barang yang terjual.
Tabel Stok Barang:
CREATE TABLE stok_barang (
id INT PRIMARY KEY,
nama VARCHAR(100),
jumlah INT
);
Tabel Penjualan:
CREATE TABLE penjualan (
id INT PRIMARY KEY,
id_barang INT,
jumlah_terjual INT,
tanggal DATE
);
Trigger untuk Mengurangi Stok Otomatis:
Kita akan membuat trigger yang berjalan setelah data dimasukkan ke tabel penjualan. Trigger ini akan mengurangi jumlah barang yang terjual di tabel stok_barang.
DELIMITER $$
CREATE TRIGGER after_penjualan
AFTER INSERT ON penjualan
FOR EACH ROW
BEGIN
-- Kurangi stok barang sesuai jumlah yang terjual
UPDATE stok_barang
SET jumlah = jumlah - NEW.jumlah_terjual
WHERE id = NEW.id_barang;
END $$
DELIMITER ;
AFTER INSERT ON penjualan: Trigger ini dijalankan setelah ada data yang dimasukkan ke tabel penjualan.
NEW.jumlah_terjual: Ini adalah data dari baris yang baru saja dimasukkan ke tabel penjualan. NEW digunakan untuk mengakses data yang baru.
UPDATE stok_barang: Setelah penjualan dilakukan, trigger ini mengurangi jumlah stok barang di tabel stok_barang sesuai dengan jumlah yang terjual.
Misalkan ada data penjualan baru:
INSERT INTO penjualan (id_barang, jumlah_terjual, tanggal)
VALUES (1, 3, '2025-09-18');
Data penjualan ini akan memicu trigger.
Trigger akan mengurangi stok barang dengan id = 1 sebanyak 3 unit.
Trigger sangat berguna jika kamu ingin melakukan hal-hal seperti:
Mencatat riwayat perubahan: Misalnya, mencatat perubahan pada tabel produk ke tabel audit.
Validasi otomatis: Menjamin data yang dimasukkan sesuai dengan aturan tertentu.
Pemeliharaan data: Menjaga konsistensi data antar tabel, seperti mengupdate stok saat terjadi penjualan.
Trigger AFTER (AFTER Trigger):
Trigger jenis ini akan dieksekusi setelah operasi (INSERT, UPDATE, DELETE) berhasil dilakukan pada tabel. Misalnya, jika ingin melakukan sesuatu setelah data berhasil dimasukkan ke dalam tabel, seperti memperbarui tabel lain atau membuat log.
Contoh: Mengupdate data lain setelah ada perubahan di tabel utama.
Trigger BEFORE (BEFORE Trigger):
Trigger jenis ini dieksekusi sebelum operasi tertentu terjadi pada tabel. Biasanya, trigger ini digunakan untuk memvalidasi data atau melakukan pengecekan terhadap data yang akan dimasukkan, diubah, atau dihapus.
Contoh: Memvalidasi data yang akan dimasukkan ke dalam tabel agar memenuhi syarat tertentu.
Trigger INSTEAD OF (INSTEAD OF Trigger):
Trigger ini mengabaikan operasi yang diminta (INSERT, UPDATE, DELETE) dan menggantinya dengan eksekusi trigger itu sendiri. Biasanya digunakan dalam view atau materialized view.
Contoh: Jika kita ingin mengganti tindakan INSERT dengan memasukkan data ke dua tabel berbeda secara bersamaan.
Trigger biasanya terdiri dari beberapa komponen:
Event: Peristiwa yang memicu trigger, seperti INSERT, UPDATE, atau DELETE.
Timing: Menentukan kapan trigger akan dijalankan, apakah sebelum atau sesudah peristiwa.
Action: Kode SQL yang akan dijalankan setelah trigger dipicu, seperti UPDATE atau INSERT ke tabel lain.
INNER JOIN hanya menampilkan baris data yang memiliki kecocokan di kedua tabel berdasarkan kolom yang dihubungkan. Jika satu sisi tidak memiliki pasangan data yang cocok, maka baris tersebut akan diabaikan dari hasil query.
JOIN ini paling umum digunakan, terutama saat kamu hanya ingin melihat data yang sudah terhubung secara langsung di antara dua tabel. Cocok untuk laporan yang hanya menampilkan transaksi yang valid atau data yang lengkap.
SELECT pelanggan.nama, pesanan.produk FROM pelanggan INNER JOIN pesanan ON pelanggan.id_pelanggan = pesanan.id_pelanggan; |
LEFT JOIN menampilkan semua data dari tabel sebelah kiri (dalam hal ini pelanggan), meskipun tidak memiliki pasangan di tabel kanan (pesanan). Jika tidak ada pasangan data, maka kolom dari tabel kanan akan bernilai NULL.
JOIN ini cocok saat kamu ingin melihat semua data utama (pelanggan), termasuk yang belum melakukan pembelian. Sangat berguna untuk laporan seperti “pelanggan aktif dan tidak aktif”.
SELECT pelanggan.nama, pesanan.produk FROM pelanggan LEFT JOIN pesanan ON pelanggan.id_pelanggan = pesanan.id_pelanggan; |
RIGHT JOIN menampilkan semua data dari tabel kanan (pesanan), termasuk yang tidak memiliki kecocokan di tabel kiri (pelanggan). Bila data pelanggan tidak ditemukan, maka kolom nama akan berisi NULL.
JOIN ini berguna untuk menemukan data yang “masih berdiri sendiri” di tabel kanan, seperti transaksi tanpa data pelanggan yang lengkap. Bisa digunakan untuk validasi data input atau audit sistem.
SELECT pelanggan.nama, pesanan.produk FROM pelanggan RIGHT JOIN pesanan ON pelanggan.id_pelanggan = pesanan.id_pelanggan; |
FULL JOIN menggabungkan hasil dari LEFT JOIN dan RIGHT JOIN. Artinya, semua baris dari kedua tabel akan ditampilkan, baik yang punya pasangan maupun yang tidak.
MySQL tidak mendukung FULL JOIN secara langsung, tapi kamu bisa menyimulasikannya dengan UNION dari LEFT dan RIGHT JOIN. Cocok untuk menampilkan semua data, sekaligus tahu bagian mana yang belum terhubung antar tabel.
SELECT pelanggan.nama, pesanan.produk FROM pelanggan LEFT JOIN pesanan ON pelanggan.id_pelanggan = pesanan.id_pelanggan UNION SELECT pelanggan.nama, pesanan.produk FROM pelanggan RIGHT JOIN pesanan ON pelanggan.id_pelanggan = pesanan.id_pelanggan; |
CROSS JOIN menggabungkan semua baris dari tabel pertama dengan semua baris dari tabel kedua. Hasilnya adalah kombinasi total atau cartesian product dari dua tabel.
Biasanya digunakan untuk membuat kombinasi semua kemungkinan pasangan, bukan untuk relasi berbasis data yang cocok. Hati-hati dengan jumlah hasil jika tabel sangat besar.
SELECT pelanggan.nama, pesanan.produk FROM pelanggan CROSS JOIN pesanan; |