TUGAS TRIGGER
Data Control Language (Trigger)
Trigger
Trigger adalah objek di dalam database yang berasosiasi dengan suatu tabel, trigger akan aktif ketika tabel tersebut dikenai event (kejadian yang menimpa tabel, bisa berupa penambahan, perubahan, maupun penghapusan data) tertentu (Raharjo, 2011).
kosep Trigger
Perintah T-SQL hanya dieksekusi ketika dibutuhkan, sama seperti Store Procedures tapi bagaimana jika kamu menginginkan sebuah perintah yang dieksekusi secara otomatis ketika kita mengeksekusi perintah lain atau melakukan aksi lain. Contohnya :
- Jika sebuah baris dihapus, maka baris itu secara otomatis akan disimpan sebagai arsip;
- Jika sebuah produk dipesan, maka stok produk itu berkurang sesuai dengan jumlah pesanan.
Menambahkan Kolom Stock
Pada database sample_pbd, Tabel Products belum memiliki kolom Stock. Oleh sebab itu, kita perlu menambahkan kolom Stock terlebih dahulu. Berikut ini query untuk menambahkan kolom Stock:
ALTER TABLE products ADD Stock INT;
Mengubah Nilai Stock
Setelah Kolom Stock ditambahkan pada Tabel Products, nilai sementara pada Kolom Stock = NULL. Oleh sebab itu, kita perlu mengubah nilai Kolom Stock menjadi 100 terlebih dahulu. Berikut ini query untuk mengubah nilai Kolom Stock:
UPDATE products SET Stock = 100;
Soal Latihan:
Soal 1:
Buatlah trigger dengan nama simpan_produk yang aktif pada saat ada penambahan data di tabel products. Action => menyimpan data ke dalam Tabel log_products dengan status "added".
Jawaban:
CREATE TRIGGER simpan_produk
ON products
AFTER INSERT
AS
BEGIN
DECLARE @id CHAR(5)
SELECT @id = prod_id from inserted
INSERT INTO log_products (prod_id, status_prod)
VALUES (@id, 'added');
END;
Pengujian:
Mari kita uji dengan menambahkan data ke Tabel Products
SELECT * FROM log_products;
Soal 2:
Buatlah trigger dengan nama hapus_produk yang aktif pada saat ada penghapusan data di Tabel Products. Action => menyimpan data ke dalam Tabel log_products dengan status "deleted".
Jawaban:
CREATE TRIGGER hapus_produk
ON products
AFTER DELETE
AS
BEGIN
DECLARE @id CHAR(5)
SELECT @id = prod_id from deleted
INSERT INTO log_products (prod_id, status_prod)
VALUES (@id, 'deleted');
END;
Pengujian:
Mari kita kita uji dengan menghapus data dari Tabel Products
DELETE FROM products
WHERE prod_id = 'P0007';
Soal 3:
Buatlah sebuah trigger dengan nama simpan_orderitems, trigger aktif setelah menyimpan data pada Tabel Orderitems. Action => merubah stock pada Tabel Products (stok berkurang).
Jawaban:
CREATE TRIGGER simpan_orderitems
ON orderitems
AFTER INSERT
AS
BEGIN
DECLARE @id CHAR(5), @Qty INT
SELECT @id = prod_id, @Qty = quantity
FROM inserted
UPDATE products SET Stock = Stock - @Qty
WHERE prod_id = @id;
END;
Pengujian:
Mari kita uji dengan menambahkan data pada Tabel Orderitems
INSERT INTO orderitems VALUES
('O0002','P0004',3);
Soal 4:
Buatlah sebuah trigger dengan nama hapus_orderitems, trigger aktif setelah menghapus data pada Tabel Orderitems. Action => mengubah stock pada Tabel Product (stock bertambah)
Jawaban:
CREATE TRIGGER hapus_orderitems
ON orderitems
AFTER DELETE
AS
BEGIN
DECLARE @id CHAR(5), @Qty INT
SELECT @id = prod_id, @Qty = quantity
FROM deleted
UPDATE products SET Stock = Stock + @Qty
WHERE prod_id = @id;
END;

















Comments
Post a Comment