MySQL - Sebelum Insert Trigger

Selamat datang, para ahli basis data masa depan! Hari ini, kita akan melihat dunia yang magis MySQL triggers, khususnya "Before Insert" trigger. Jangan khawatir jika Anda masih baru; saya akan mengarahkan Anda langkah demi langkah, seperti yang telah saya lakukan untuk ribuan murid selama tahun-tahun mengajar saya. Mari kita mulai perjalanan menarik ini bersama!

MySQL - Before Insert Trigger

Apa Itu MySQL Before Insert Trigger?

Bayangkan Anda adalah seorang bouncer di klub mewah. Tugas Anda adalah untuk memeriksa setiap orang sebelum mereka masuk. Itu tepat apa yang dilakukan Before Insert trigger untuk basis data Anda! Itu adalah penjaga khusus yang bereaksi sebelum data baru dimasukkan ke dalam tabel.

Titik Penting:

  1. Itu aktif secara otomatis sebelum operasi INSERT.
  2. Itu dapat mengubah data yang dimasukkan atau bahkan menghindari penyisipan secara keseluruhan.
  3. Itu adalah alat yang kuat untuk menjaga integritas data dan melaksanakan aturan bisnis.

Sekarang, mari kita lihat bagaimana kita dapat membuat dan menggunakan trigger ini!

Membuat Before Insert Trigger Dasar

mari kita mulai dengan contoh sederhana. Supaya kita memiliki tabel yang disebut employees:

CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
salary DECIMAL(10, 2),
hire_date DATE
);

Sekarang, mari kita buat trigger yang memastikan semua karyawan baru memiliki gaji minimum $30,000:

DELIMITER //
CREATE TRIGGER before_employee_insert
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
IF NEW.salary < 30000 THEN
SET NEW.salary = 30000;
END IF;
END//
DELIMITER ;

mari kitauraikan ini:

  1. DELIMITER //: Ini mengubah delimiter secara sementara sehingga kita dapat menggunakan tanda titik koma dalam trigger kita.
  2. CREATE TRIGGER before_employee_insert: Kita menamakan trigger kita.
  3. BEFORE INSERT ON employees: Ini menentukan kapan dan di mana trigger harus aktif.
  4. FOR EACH ROW: Trigger akan berjalan untuk setiap baris yang dimasukkan.
  5. BEGIN ... END: Ini berisi kode sebenarnya trigger kita.
  6. IF NEW.salary < 30000 THEN SET NEW.salary = 30000;: Ini adalah logika kita. Jika gaji terlalu rendah, kita set ke minimum.
  7. DELIMITER ;: Kita mengubah delimiter kembali ke titik koma.

Sekarang, mari kita uji ini:

INSERT INTO employees (name, salary, hire_date) VALUES ('John Doe', 25000, '2023-05-01');
SELECT * FROM employees;

Anda akan melihat bahwa gaji John secara otomatis diatur ke $30,000. Magic, kan?

Contoh Before Insert Trigger Lanjut

mari kita tingkatkan permainan kita dengan contoh yang lebih kompleks. Kita akan membuat trigger yang:

  1. Secara otomatis menetapkan tanggal masuk kerja ke hari ini jika tidak disediakan.
  2. Memastikan nama dalam bentuk kapitalisasi judul.
  3. Melog penyisipan ke tabel audit terpisah.

Pertama, mari kita buat tabel audit:

CREATE TABLE employee_audit (
id INT AUTO_INCREMENT PRIMARY KEY,
action VARCHAR(50),
employee_id INT,
old_data TEXT,
new_data TEXT,
changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Sekarang, mari kita buat trigger lanjut:

DELIMITER //
CREATE TRIGGER before_employee_insert_advanced
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
-- Set hire date to today if not provided
IF NEW.hire_date IS NULL THEN
SET NEW.hire_date = CURDATE();
END IF;

-- Convert name to title case
SET NEW.name = CONCAT(
UPPER(SUBSTRING(NEW.name, 1, 1)),
LOWER(SUBSTRING(NEW.name FROM 2))
);

-- Log the insertion
INSERT INTO employee_audit (action, employee_id, new_data)
VALUES ('INSERT', NEW.id, CONCAT('Name: ', NEW.name, ', Salary: ', NEW.salary, ', Hire Date: ', NEW.hire_date));
END//
DELIMITER ;

Trigger ini melakukan beberapa hal:

  1. Memeriksa jika hire_date NULL dan menetapkannya ke tanggal saat ini jika begitu.
  2. Mengonversi nama ke bentuk kapitalisasi judul menggunakan fungsi string.
  3. Melog penyisipan ke tabel employee_audit.

mari kita uji ini:

INSERT INTO employees (name, salary) VALUES ('jANE smith', 40000);
SELECT * FROM employees;
SELECT * FROM employee_audit;

Anda akan melihat bahwa nama Jane sekarang tercapitalisasi dengan benar, dia memiliki tanggal masuk kerja, dan ada entri di tabel audit!

Before Insert Trigger Menggunakan Program Klien

Meskipun kita telah menggunakan baris perintah MySQL, Anda juga dapat membuat dan menggunakan trigger melalui program klien seperti MySQL Workbench atau phpMyAdmin. Prosesnya hampir sama:

  1. Hubungkan ke basis data Anda.
  2. Buka window skrip SQL baru atau window query.
  3. Salin dan tempel kode pembuatan trigger Anda.
  4. Eksekusi skrip.

Berikut adalah tabel metode umum untuk membuat trigger di berbagai lingkungan:

Lingkungan Metode
MySQL CLI Ketik atau salin trigger code secara langsung
MySQL Workbench Gunakan SQL Editor untuk menulis dan menjalankan code trigger
phpMyAdmin Navigasikan ke tab 'Triggers' untuk tabel dan gunakan GUI atau tulis SQL
Code Aplikasi Gunakan pustaka koneksi database untuk menjalankan SQL pembuatan trigger

Ingat, meskipun metode berbeda, sintaks SQL tetap sama!

Kesimpulan

Selamat! Anda telah mengambil langkah pertama ke dalam dunia MySQL triggers. Kita telah menutupi dasar-dasar, membuat trigger yang kuat, dan bahkan menyentuh bagaimana menggunakannya di berbagai lingkungan.

Sekarang Anda teruskan perjalanan basis data Anda, ingat bahwa trigger adalah seperti penjaga tak kenal yang bekerja keras di belakang layar, memastikan data Anda tetap bersih, konsisten, dan sesuai dengan aturan bisnis Anda.

Teruslatih, eksperimen, dan terutama, bersenang-senang dengannya! Siapa tahu, mungkin suatu hari Anda akan menjadi orang yang mengajarkan generasi baru penggemar basis data tentang keajaiban trigger.

Selamat coding, dan semoga permintaan Anda selalu mengembalikan hasil yang Anda harapkan!

Credits: Image by storyset