TUGAS TRIGGER SQL

 

 Nama : Mutiara Naibaho 

NPM : 19312060

IF 19 A 

Data Control Language (DCL) adalah salah satu dari kelompok perintah SQL yang digunakan untuk melakukan kontrol terhadap privilege atau hak akses khusus untuk berinteraksi dengan database. Hak akses khusus ini diperlukan sebagai prasyarat bagi setiap user database untuk melakukan berbagai aksi di database, seperti: membuat object, menghapus object, mengubah object, menampilkan hasil query, dan seterusnya.

Sederhananya, setiap pengguna database hanya dapat melakukan aksi-aksi yang sudah diberikan oleh user dengan kontrol tertinggi di dalam database tersebut. Misalnya, pengguna A hanya diberikan akses untuk membuat dan menampilkan sesuatu di database. Maka, pengguna tersebut hanya dapat melakukan perintah tersebut saja, tidak bisa melakukan ubah data, hapus data, dan seterusnya. Hal ini menjadi penting untuk diketahui karena di dalam dunia kerja dengan banyak pengguna database, manajemen pembagian hak akses seperti ini sangat krusial dan berpengaruh terhadap integritas dan keamanan data.

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 

 

Trigger adalah perintah SQL yang berjalan secara otomatis untuk mengeksekusi perintah DML seperti INSERT, UPDATE, DELETE.

contoh ;schema design:

 





cara buat log :
CREATE TABLE LOG_PRODUCTS(
PROD_ID CHAR(7) NOT NULL
STATUS_PROD VARCHAR(10) NOT NULL
STATUS_DATE DATETIME DEFAULT GETDATE())

 

Atau kalian dapat mengimport file didalam tautan ini : db_trigger

Berikut ini salah satu contoh trigger

CREATE TRIGGER NAMA_TRIGGER ON

NAMA_TABEL_PEMICU

PILIH (INSERT/UPDATE/DELETE)

AS

contoh:

CREATE TRIGGER NEW_PRODUCT TRIGGER ON

PRODUCTS  

AFTER INSERT 

AS

SELECT 'PRODUCT ADDED';

 

 

 

cara menghapus trigger

kita dapat menggunakan perintah DROP untuk menghapus trigger yang sudah yang kita buat sebelumnya  dan cara menghapus trigger:

DROP TRIGGER NAMA_TRIGGER

contoh :

DROP TRIGGER NEWPRODUCT_TRIGGER

cara menambah kan kolom stock

 

ALTER TABLE PRODUCTS ADD STOK INT:

cara mengubah nilai stok

UPDATE PRODUCTS SET STOK =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');



 



Catatan: 1 row affected pertama menunjukkan data berhasil ditambahkan ke Tabel Products, 1 row affected kedua menunjukkan bahwa trigger aktif (menambahkan data ke Tabel log_products).

 

Hasil Trigger

Setelah menambahkan data ke Tabel Products, trigger akan aktif dan menambahkan data ke Tabel log_products. Mari kita lihat hasil dari trigger dengan menampilkan Tabel log_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';

 




Catatan: 1 row affected pertama menunjukkan data berhasil dihapus dari Tabel Products, 1 row affected kedua menunjukkan bahwa trigger aktif (menambahkan data ke Tabel log_products).

 

Hasil Trigger

Setelah menghapus data dari Tabel Products, trigger akan aktif dan menambahkan data ke Tabel log_products. Mari kita lihat hasil dari trigger dengan menampilkan Tabel log_products

 

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

 




Catatan: 1 row affected pertama menunjukkan data berhasil ditambahkan ke Tabel Orderitems, 1 row affected kedua menunjukkan bahwa trigger aktif (mengubah nilai Stock pada Tabel Products).

 

Hasil Trigger

Setelah menambahkan data ke Tabel Orderitems, trigger akan aktif dan mengubah nilai Stock pada Tabel Products. Mari kita lihat hasil dari trigger dengan menampilkan Tabel Products

 

SELECT * FROM products;

 



 

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

 


 


Catatan: 1 row affected pertama menunjukkan data berhasil dihapus dari Tabel Orderitems, 3 row affected kedua menunjukkan bahwa trigger aktif (mengubah 3 baris data Stock dari Tabel Products karena ada 3 baris data yang memiliki order_num = 'O0002').

 

Hasil Trigger

Setelah menghapus data dari Tabel Orderitems, trigger akan aktif dan mengubah nilai stock pada Tabel Products. Mari kita lihat 

 

 



 

Komentar

Postingan populer dari blog ini

Jelaskan tentang snowflake schema dalam data warehouse

Komponen dan Fitur Data Warehouse

jelaskan tentang star schema dalam data warehouse