Resep SQL‎ > ‎MySQL‎ > ‎

Trigger untuk Created dan Modified DateTime

posted Mar 14, 2012, 5:30 PM by Webmaster BelajarSQL.com   [ updated Mar 14, 2012, 7:20 PM ]
Field yang berisi informasi tanggal record dibuat dan dirubah merupakan field / kolom yang sangat penting. Ini terutama untuk menghasilkan laporan analisa yang bersifat kronologis atau untuk kepentingan data warehouse. Kedua informasi tersebut biasanya memiliki konvensi penamaan "created_datetime" dan "modified_datetime".

Field ini tentunya harus diupdate dengan dukungan mekanisme CDC (Change Data Capture) yang baik sehingga tiap field benar-benar mencerminkan perubahan yang sebenarnya. 

Sampai dengan penulisan ini dibuat, MySQL belum memiliki mekanisme CDC tersendiri seperti halnya SQL Server 2008. Sebagai workaround, kita dapat menggunakan mekanisme trigger

Dan pada kesempatan kali ini penulis akan coba memberikan contoh penggunaan trigger untuk kolom "created_datetime".
  1. Buatlah satu table dengan nama cmddate pada database MySQL Anda dengan perintah berikut.

    CREATE TABLE cmdate 
      ( 
         kode              INT, 
         deskripsi         VARCHAR(20), 
         created_datetime  DATETIME, 
         modified_datetime DATETIME 
      ) 


  2. Tambahkan trigger pada table tersebut untuk mengupdate field created_datetime dan modified_datetime dengan perintah berikut.

    DELIMITER |
     
    CREATE TRIGGER created_date_treatment BEFORE INSERT
        ON cmdate FOR EACH ROW
    BEGIN
      SET NEW.created_datetime = SYSDATE(), NEW.modified_datetime = SYSDATE();
    END;
     
    |
     
    CREATE TRIGGER modified_date_treatment BEFORE UPDATE
        ON cmdate FOR EACH ROW
    BEGIN
      SET NEW.modified_datetime = SYSDATE();
    END;
     
    |
     
    DELIMITER ;

  3. Sekarang cobalah memasukkan data dengan perintah-perintah SQL berikut ini.

    INSERT INTO cmdate(kode, deskripsi) VALUES (1, 'Deskripsi 1');
    INSERT INTO cmdate(kode, deskripsi) VALUES (2, 'Deskripsi 2');


  4. Dan rubah satu row data dengan perintah berikut.

    UPDATE cmdate SET deskripsi = 'Deskripsi Satu' WHERE kode = 1;

  5. Query kembali table tersebut dan perhatikan hasilnya.

    SELECT * FROM cmdate;


  6. Selesai.

Comments