Kamis, 20 Januari 2011

Trigger


adalah batch/sekumpulan perintah yang secara otomatis dikerjakan ketika terjadi penyisipan (insert), pengubahan (update) atau penghapusan data (delete) pada sebuah tabel. 


TRIGGER UPDATE
CREATE TRIGGER dbo.TriggerUpdateNilai
   ON  TBNilai
   AFTER UPDATE
AS
BEGIN
      DECLARE @NRP nchar(10)
      DECLARE @KodeMK char(5)
      DECLARE @Nilai char(2)
       
      -- Deletion Commandment
      SELECT @NRP = NRP, @KodeMK = KodeMK, @Nilai = Nilai FROM DELETED
     
      INSERT INTO DBTrigger.dbo.TBLog
      VALUES (getdate(), 'DELETE', Suser_Sname(), @NRP + '/' + @KodeMK + '/' + @Nilai)

    -- Insertion Commandment
      SELECT @NRP = NRP, @KodeMK = KodeMK, @Nilai = Nilai FROM INSERTED
     
      INSERT INTO DBTrigger.dbo.TBLog
      VALUES (getdate(), 'INSERT', Suser_Sname(), @NRP + '/' + @KodeMK + '/' + @Nilai)
     
      END
GO

Select * from TBNilai
Select * from TBLog

--
INSERT BARANG GANTI STOK
CREATE TRIGGER dbo.SinkroInsertion
   ON  TBJual
   AFTER INSERT
AS
BEGIN
      DECLARE @Qty int
      DECLARE @Kode varchar(10)
      -- Insertion Commandment
      SELECT @Qty = Qty, @Kode = Kode FROM INSERTED
     
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok - @Qty
      WHERE Kode = @Kode
END
GO

--
DELETE BARANG
ALTER TRIGGER dbo.SinkroDeletion
   ON  TBJual
   AFTER DELETE
AS
BEGIN
      DECLARE @Qty int
      DECLARE @Kode varchar(10)
      --  delete Commandment
      SELECT @Qty = Qty, @Kode = Kode FROM DELETED
     
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok + @Qty
      WHERE Kode = @Kode
END
GO



UPDATE
select * from

ALTER TRIGGER dbo.SinkroUpdate
   ON  TBJual
   AFTER UPDATE
AS
BEGIN
      DECLARE @Qtylama int
      DECLARE @Qtybaru int
      DECLARE @Kode varchar(10)
      -- UPDATE Commandment
      SELECT @Qtylama = Qty, @Kode = Kode FROM DELETED
      SELECT @Qtybaru = Qty FROM INSERTED
     
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok + @Qtylama - @Qtybaru
      WHERE Kode = @Kode
END
GO


MODIFIKASI 

USE [DBTrigger]
GO
/****** Object:  Trigger [dbo].[SinkroInsertion]    Script Date: 01/13/2011 10:42:02 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[SinkroInsertion]
   ON  [dbo].[TBJual]
   AFTER INSERT
AS
BEGIN
      DECLARE @Qty int
      DECLARE @Kode varchar(10)
      DECLARE @TotalJual money
      DECLARE @Harga money
      DECLARE @TglFJ datetime
     
      -- Insertion Commandment
      SELECT @Qty = Qty, @Kode = Kode, @Harga = Harga, @TglFJ = TglFJ FROM INSERTED
     
      SET @TotalJual = @Qty * @Harga
     
      IF datepart(mm, @TglFJ) = 1
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok - @Qty,
       Jual1 = Jual1 + @TotalJual,
       Qty1 = Qty1 + @Qty
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 2
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok - @Qty,
       Jual2 = Jual2 + @TotalJual,
       Qty2 = Qty2 + @Qty
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 3
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok - @Qty,
       Jual3 = Jual3 + @TotalJual,
       Qty3 = Qty3 + @Qty
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 4
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok - @Qty,
       Jual4 = Jual4 + @TotalJual,
       Qty4 = Qty4 + @Qty
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 5
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok - @Qty,
       Jual5 = Jual5 + @TotalJual,
       Qty5 = Qty5 + @Qty
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 6
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok - @Qty,
       Jual6 = Jual6 + @TotalJual,
       Qty6 = Qty6 + @Qty
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 7
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok - @Qty,
       Jual7 = Jual7 + @TotalJual,
       Qty7 = Qty7 + @Qty
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 8
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok - @Qty,
       Jual8 = Jual8 + @TotalJual,
       Qty8 = Qty8 + @Qty
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 9
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok - @Qty,
       Jual9 = Jual9 + @TotalJual,
       Qty9 = Qty9 + @Qty
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 10
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok - @Qty,
       Jual10 = Jual10 + @TotalJual,
       Qty10 = Qty10 + @Qty
      WHERE Kode = @Kode 
     
      ELSE IF datepart(mm, @TglFJ) = 11
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok - @Qty,
       Jual11 = Jual11 + @TotalJual,
       Qty11 = Qty11 + @Qty
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 12
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok - @Qty,
       Jual2 = Jual2 + @TotalJual,
       Qty12 = Qty12 + @Qty
      WHERE Kode = @Kode
END

EDIT
USE [DBTrigger]
GO
/****** Object:  Trigger [dbo].[SinkroUpdate]    Script Date: 01/13/2011 10:59:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[SinkroUpdate]
   ON  [dbo].[TBJual]
   AFTER UPDATE
AS
BEGIN
      DECLARE @Qtylama int
      DECLARE @Qtybaru int
      DECLARE @Kode varchar(10)
      DECLARE @TotalJuallama money
      DECLARE @TotalJualbaru money
      DECLARE @Hargalama money
      DECLARE @Hargabaru money
      DECLARE @TglFJ datetime
      -- UPDATE Commandment
      SELECT @Qtylama = Qty, @Kode = Kode, @Hargalama = Harga, @TglFJ = TglFJ  FROM DELETED
      SELECT @Qtybaru = Qty, @Hargabaru = Harga FROM INSERTED
     
      SET @TotalJuallama = @Qtylama * @Hargalama
      SET @TotalJualbaru = @Qtybaru * @Hargabaru
     
      IF datepart(mm, @TglFJ) = 1
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok + @Qtylama - @Qtybaru,
       Jual1 = Jual1 + @TotalJuallama - @TotalJualBaru,
       Qty1 = Qty1 + @Qtylama - @Qtybaru
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 2
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok + @Qtylama - @Qtybaru,
       Jual2 = Jual2 + @TotalJuallama - @TotalJualBaru,
       Qty2 = Qty2 + @Qtylama - @Qtybaru
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 3
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok + @Qtylama - @Qtybaru,
       Jual3 = Jual1 + @TotalJuallama - @TotalJualBaru,
       Qty3 = Qty1 + @Qtylama - @Qtybaru
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 4
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok + @Qtylama - @Qtybaru,
       Jual4 = Jual4 + @TotalJuallama - @TotalJualBaru,
       Qty4 = Qty4 + @Qtylama - @Qtybaru
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 5
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok + @Qtylama - @Qtybaru,
       Jual5 = Jual5 + @TotalJuallama - @TotalJualBaru,
       Qty5 = Qty5 + @Qtylama - @Qtybaru
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 6
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok + @Qtylama - @Qtybaru,
       Jual6 = Jual6 + @TotalJuallama - @TotalJualBaru,
       Qty6 = Qty6 + @Qtylama - @Qtybaru
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 7
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok + @Qtylama - @Qtybaru,
       Jual7 = Jual7 + @TotalJuallama - @TotalJualBaru,
       Qty7 = Qty7 + @Qtylama - @Qtybaru
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 8
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok + @Qtylama - @Qtybaru,
       Jual8 = Jual8 + @TotalJuallama - @TotalJualBaru,
       Qty8 = Qty8 + @Qtylama - @Qtybaru
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 9
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok + @Qtylama - @Qtybaru,
       Jual9 = Jual9 + @TotalJuallama - @TotalJualBaru,
       Qty9 = Qty9 + @Qtylama - @Qtybaru
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 10
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok + @Qtylama - @Qtybaru,
       Jual10 = Jual10 + @TotalJuallama - @TotalJualBaru,
       Qty10 = Qty10 + @Qtylama - @Qtybaru
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 11
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok + @Qtylama - @Qtybaru,
       Jual11 = Jual11 + @TotalJuallama - @TotalJualBaru,
       Qty11 = Qty11 + @Qtylama - @Qtybaru
      WHERE Kode = @Kode
     
      ELSE IF datepart(mm, @TglFJ) = 12
      UPDATE DBTrigger.dbo.TBBarang
      SET Stok = Stok + @Qtylama - @Qtybaru,
       Jual12 = Jual12 + @TotalJuallama - @TotalJualBaru,
       Qty12 = Qty12 + @Qtylama - @Qtybaru
      WHERE Kode = @Kode
END

Tidak ada komentar:

Posting Komentar