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.

Latihan Trigger

Buatlah Database kemudian buat Tabel sesuai dengan Schema Design dibawah ini:


Membuat Tabel log_products

Berikut ini query untuk membuat Tabel log_products:
CREATE TABLE log_products(
prod_id CHAR(5) NOT NULL,
status_prod VARCHAR(10) NOT NULL,
status_date DATETIME DEFAULT GETDATE());


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

INSERT INTO products VALUES
('P0007','Puma FX',350000,'V0001',100);

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';


SELECT * FROM log_products;


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;


Pengujian:
Mari kita uji dengan menghapus data pada Tabel Orderitems

DELETE FROM orderitems WHERE order_num = 'O0002';


SELECT * FROM products



Comments

Popular posts from this blog

Quiz Desain Pengalaman Pengguna - Putri Oktaria Maylanda

Contoh Tamplate Dokumentasi Pengujian Perangkat Lunak

Makalah Nine Step Methodology