TUGAS TRIGGER SQL
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:
|
||||||||||||||||||||||
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');
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';
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);
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;
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
Posting Komentar