Selasa, 13 Maret 2012

Trigger Pada MySql

Posted by Beny agatha 21.33, under | No comments

Trigger merupakan nama dari object database yang dikaitkan dengan sebuah tabel dan diaktifkan ketika terjadi sebuah even terhadap tabel. Database event tersebut adalah proses insert, update, dan delete.
Trigger akan secara otomatis dijalankan ketika suatu event/aksi berlangsung pada database.
Trigger tidak dapat langsung dieksekusi seperti Store procedure, tidak memiliki parameter dan return code.

Pembuatan Trigger

Kita dapat membuat trigger dengan perintah CREATE TRIGGER. Berikut adalah contoh syntax :
CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name trigger_time trigger_event
ON tbl_name FOR EACH ROW trigger_body


Keterangan :
  • trigger_name : nama trigger.
  • trigger_time : kapan kita mengeksekusi trigger, apakah sebelum atau sesudah perubahan pada row data table. Jadi pilihannya adalah AFTER atau BEFORE.
  • trigger_event : merupakan event atau peristiwa yang menyebabkan trigger dilakukan. Pilihan event tersebut adalah INSERT, UPDATE, DELETE.
  • tbl_name : nama table.
  • trigger_body : statement-statement perintah SQL yang akan dilakukan. Jika perintahnya lebih dari satu maka gunakan dalam blok statement BEGIN ... END.
  • Jika DEFINER dispesifikasikan maka kita memutuskan trigger tersebut dijalankan hanya oleh user tertentu (dalam format penulisan user@host). Jika tidak dispesifikasikan, maka user yang melakukan perubahan (CURRENT_USER) adalah pilihan default.
Referensi "OLD" dan "NEW".

Karena trigger digunakan pada saat terjadi perubahan row data, maka kita perlu referensi ke row sebelum dan sesudah perubahan. Untuk ini ada dua alias yang berfungsi untuk hal tersebut yaitu OLD dan NEW.

Sesuai namanya, OLD digunakan untuk referensi sebelum perubahan dan NEW untuk referensi sesudah perubahan.

Contoh Penggunaan : Trigger After Delete.
Berikut adalah contoh penggunaan trigger untuk event setelah penghapusan (AFTER DELETE) pada table "tr_penjualan" - database phi_minimart. Langkah yang akan kita lakukan adalah sebagai berikut :
  1. Kita akan membuat satu table audit dengan nama "tr_penjualan_hapus" yang berisi row-row yang dihapus dari table "tr_penjualan" dengan tambahan dua field, yaitu tanggal penghapusan (tgl_perubahan) dan user MySQL yang melakukan hal tersebut (nama_user).

    Berikut adalah perintahnya :

    USE phi_minimart;
    CREATE TABLE `tr_penjualan_hapus` LIKE `tr_penjualan`;
    ALTER TABLE `tr_penjualan_hapus` ADD
    (
    `tgl_perubahan` DATETIME,
    `nama_user` VARCHAR(200)
    );

  2. Tahap berikutnya adalah membuat trigger yang akan melakukan populasi data yang dihapus dari "tr_penjualan" ke table "tr_penjualan_hapus".

    Berikut adalah perintahnya :

    DELIMITER |
    CREATE TRIGGER hapus_tr_penjualan AFTER DELETE
    ON tr_penjualan FOR EACH ROW
    BEGIN
    INSERT INTO tr_penjualan_hapus
    ( tgl_transaksi,
    kode_cabang,
    kode_kasir,
    kode_item,
    kode_produk,
    jumlah_pembelian,
    tgl_perubahan,
    nama_user
    )
    VALUES
    ( OLD.tgl_transaksi,
    OLD.kode_cabang,
    OLD.kode_kasir,
    OLD.kode_item,
    OLD.kode_produk,
    OLD.jumlah_pembelian,
    SYSDATE(),
    CURRENT_USER
    );
    END;
    |
  3. Setelah trigger di atas kita buat, sekarang saatnya kita melakukan pengujian. Coba hapus tiga row data dari table "tr_penjualan" dan lihat efeknya di table "tr_penjualan_hapus".

    Jalankan perintah berikut :

    DELETE FROM tr_penjualan LIMIT 3;
    SELECT * FROM tr_penjualan_hapus;

Terlihat pada gambar di atas 3 row yang dihapus telah "pindah" ke table "tr_penjualan_hapus" dengan tambahan informasi waktu penghapusan dan user yang menghapus.
Share

Bantul Juara Umum Cabang Atletik

Posted by Beny agatha 11.02, under | No comments

Beny Suryantoro yang menyumbang
1 medali perak dan 1 perunggu saat FINAL
Long Jump Porprov XI di Sirkuit
Sintetis UNY Yogyakarta
Tim atletik Bantul yang pada Pekan Olahraga Provinsi (Porprov) DIY XI menjadi juara umum, tak mau berlama-lama menikmati waktu libur. Para atlet atletik Bantul sudah terlihat latihan di bawah asuhan pelatih Totok Sutartana.
Share

Pengolahan Basis Data

Posted by Beny agatha 04.20, under | No comments

Pengolahan Database - Relasi Antar Table Pada Database

1. LANDASAN TEORI

MySQL adalah salah satu contoh software/paket DBMS yang sangat populer. Kepopuleran MySQL dimungkinkan karena kemudahannya untuk digunakan, cepat secara kinerja query, dan mencukupi untuk kebutuhan database perusahaan-perusahaan skala menengah-kecil.
Share