none
Bagaimana Cara Membuat trigger di sql server

    Question

  • mohon bantuannya saya pemula yang sedang mencoba sql server ...saya punya dua tabel, tabel a dan B, ketika terjadi perubahan data/row pada tabel a secara otomatis row/data yang ada pada tabel B terupdate tapi jika perubahan pada tabel a berulang-ulang ,tidak menduplikasi data yang sudah ada pada tabel b sehingga tidak terjadi redundan data pada tabel b, pertanyaan saya, bagaimana cara membuat triger, insert, update, delete nya?, terimakasih atas pencerahannya.
    • Edited by Boang Monday, August 06, 2012 3:24 AM
    Monday, August 06, 2012 3:24 AM

Answers

  • Mas Boang,

    Ya benar sekali bahwa di SQL Server sudah support untuk melakukan TRIGGER.

    Cara-cara membuat trigger di SQL Server pun bertebaran, salah duanya anda dapat dilihat disini :

    Semoga membantu.


    Follow me @emantin34 | Profile: https://mvp.support.microsoft.com/profile/Suherman

    Monday, August 06, 2012 2:38 PM
  • Mr. Suherman Terima kasih atas jawaban anda tapi masih ada yang kurang jelas dan mau saya tanyakan,ketika saya membuat trigger untuk insert,update,delete untuk tabel dalam database yang sama ini berfungsi dengan baik. Tapi ketika saya membuat untuk insert,update untuk tabel dari database yang berbeda, Fungsi-fungsi tersebut tidak bekerja semestinya hanya fungsi DELETE yang bisa dignakan,Apa kah trigger tidak support untuk database yang berbeda?  saya  menggunakan SQL SERVER 2008.berikut codenya:

    ALTER TRIGGER [Kendaraan]
     ON [dbo].[t_MasterKendaraan]
     AFTER INSERT,UPDATE,DELETE
     
     AS
     BEGIN
      IF EXISTS(SELECT   *  FROM [Database_A].[dbo].[v_KendaraanBermotor])
            BEGIN
                UPDATE [Database_B].[dbo].[T_KendaraanBermotor]
                          ----code update---
            END
        IF NOT EXISTS (SELECT *  FROM [Database_A].[dbo].[vKendaraanBermotor])
                 BEGIN
                       INSERT INTO [Database_B].[dbo].[T_KendaraanBermotor]
                            SELECT * FROM [Database_A].[dbo].[vKendaraanBermotor]    
                 END
              
     END

    Code ini belum benar mohon koreksinya ,terima kasih



    Mas Boang,

    Kalo untuk untuk Aktivitas Delete dapat berfungsi TRIGGER nya, berarti seharusnya berjalan dengan baik juga untuk update dan insert. Coba cek kembali Data Manipulation Language yang ada didalam TRIGGER yang dibuat dan korelasikan dengan definisi 'BERHASIL' yang mas Boang maksud.

    Kemudian ada sedikit keanehan bagi saya pada saat perintah  IF EXISTS. kok gak ada Filternya ya ?

    IF EXISTS(SELECT   *  FROM [Database_A].[dbo].[v_KendaraanBermotor] where ?????????????? )

    begitu juga dengan yang dibawahnya ?

    IF NOT EXISTS (SELECT *  FROM [Database_A].[dbo].[vKendaraanBermotor] where ??????????)
    atau memang harus seperti itu ya ? secara Syntax sih gak salah tapi secara logic agak tidak biasa.


    Follow me @emantin34 | Profile: https://mvp.support.microsoft.com/profile/Suherman

    • Marked as answer by Boang Friday, August 10, 2012 4:47 AM
    Wednesday, August 08, 2012 6:30 AM

All replies

  • Mas Boang,

    Ya benar sekali bahwa di SQL Server sudah support untuk melakukan TRIGGER.

    Cara-cara membuat trigger di SQL Server pun bertebaran, salah duanya anda dapat dilihat disini :

    Semoga membantu.


    Follow me @emantin34 | Profile: https://mvp.support.microsoft.com/profile/Suherman

    Monday, August 06, 2012 2:38 PM
  • Mr. Suherman Terima kasih atas jawaban anda tapi masih ada yang kurang jelas dan mau saya tanyakan,ketika saya membuat trigger untuk insert,update,delete untuk tabel dalam database yang sama ini berfungsi dengan baik. Tapi ketika saya membuat untuk insert,update untuk tabel dari database yang berbeda, Fungsi-fungsi tersebut tidak bekerja semestinya hanya fungsi DELETE yang bisa dignakan,Apa kah trigger tidak support untuk database yang berbeda?  saya  menggunakan SQL SERVER 2008.berikut codenya:

    ALTER TRIGGER [Kendaraan]
     ON [dbo].[t_MasterKendaraan]
     AFTER INSERT,UPDATE,DELETE
     
     AS
     BEGIN
      IF EXISTS(SELECT   *  FROM [Database_A].[dbo].[v_KendaraanBermotor])
            BEGIN
                UPDATE [Database_B].[dbo].[T_KendaraanBermotor]
                          ----code update---
            END
        IF NOT EXISTS (SELECT *  FROM [Database_A].[dbo].[vKendaraanBermotor])
                 BEGIN
                       INSERT INTO [Database_B].[dbo].[T_KendaraanBermotor]
                            SELECT * FROM [Database_A].[dbo].[vKendaraanBermotor]    
                 END
              
     END

    Code ini belum benar mohon koreksinya ,terima kasih


    • Edited by Boang Wednesday, August 08, 2012 3:03 AM
    Wednesday, August 08, 2012 3:03 AM
  • Mr. Suherman Terima kasih atas jawaban anda tapi masih ada yang kurang jelas dan mau saya tanyakan,ketika saya membuat trigger untuk insert,update,delete untuk tabel dalam database yang sama ini berfungsi dengan baik. Tapi ketika saya membuat untuk insert,update untuk tabel dari database yang berbeda, Fungsi-fungsi tersebut tidak bekerja semestinya hanya fungsi DELETE yang bisa dignakan,Apa kah trigger tidak support untuk database yang berbeda?  saya  menggunakan SQL SERVER 2008.berikut codenya:

    ALTER TRIGGER [Kendaraan]
     ON [dbo].[t_MasterKendaraan]
     AFTER INSERT,UPDATE,DELETE
     
     AS
     BEGIN
      IF EXISTS(SELECT   *  FROM [Database_A].[dbo].[v_KendaraanBermotor])
            BEGIN
                UPDATE [Database_B].[dbo].[T_KendaraanBermotor]
                          ----code update---
            END
        IF NOT EXISTS (SELECT *  FROM [Database_A].[dbo].[vKendaraanBermotor])
                 BEGIN
                       INSERT INTO [Database_B].[dbo].[T_KendaraanBermotor]
                            SELECT * FROM [Database_A].[dbo].[vKendaraanBermotor]    
                 END
              
     END

    Code ini belum benar mohon koreksinya ,terima kasih



    Mas Boang,

    Kalo untuk untuk Aktivitas Delete dapat berfungsi TRIGGER nya, berarti seharusnya berjalan dengan baik juga untuk update dan insert. Coba cek kembali Data Manipulation Language yang ada didalam TRIGGER yang dibuat dan korelasikan dengan definisi 'BERHASIL' yang mas Boang maksud.

    Kemudian ada sedikit keanehan bagi saya pada saat perintah  IF EXISTS. kok gak ada Filternya ya ?

    IF EXISTS(SELECT   *  FROM [Database_A].[dbo].[v_KendaraanBermotor] where ?????????????? )

    begitu juga dengan yang dibawahnya ?

    IF NOT EXISTS (SELECT *  FROM [Database_A].[dbo].[vKendaraanBermotor] where ??????????)
    atau memang harus seperti itu ya ? secara Syntax sih gak salah tapi secara logic agak tidak biasa.


    Follow me @emantin34 | Profile: https://mvp.support.microsoft.com/profile/Suherman

    • Marked as answer by Boang Friday, August 10, 2012 4:47 AM
    Wednesday, August 08, 2012 6:30 AM