PRAKTIKUM II - Trigger - Oracle - 42518045 PDF
PRAKTIKUM II - Trigger - Oracle - 42518045 PDF
“TRIGGER”
ADMINISTRASI BASIS DATA
DISUSUN OLEH
MUHAMMAD RAFLI SALAM
425 18 045
2B TEKNIK KOMPUTER DAN JARINGAN
1. Tujuan
2. Dasar Teori
Trigger adalah sebuah objek database yang diasosiasikan dengan sebuah tabel dan akan
aktif (terpicu/trigger) ketika sebuah event terjadi pada tabel tersebut. Trigger hanya terjadi
ketika ada eksekusi INSERT, DELETE dan UPDATE pada tabel yang bersangkutan. Waktu
eksekusi trigger yang mungkin terjadi terdiri dari dua yaitu BEFORE dan AFTER dari
statement SQL-nya.
Trigger terdapat pada hampir semua DBMS yang digunakan untuk mengelola dan
memantau tabel selama proses manipulasi data (INSERT, DELETE dan UPDATE). Trigger
dapat digunakan untuk berbagai tujuan anatara lain, mencatat (log) perubahan pada data tabel,
melakukan validasi, dan membuat backup atau duplikat data,. Trigger dapat meunculkan
peringatan atau bisa berupa aksi manipulasi yang lain pada tabel berbeda.
26
Contoh kasus (sistem pertokoan)
Tabel-tabel:
MYSQL:
CREATE TABLE produk (
REFERENCES produk(id_produk)
27
ORACLE SQL:
############# Table 1 ###########
CREATE TABLE tbl_produk (
FROM dual;
END;
FROM dual;
END;
);
FROM dual;
END;
ORACLE SQL:
CREATE OR REPLACE TRIGGER tbl_produk_log_data_baru
AFTER INSERT ON tbl_produk FOR
EACH ROW
BEGIN
INSERT INTO TBL_PRODUK_LOG (KETERANGAN, WAKTU,
NAMA_PRODUK, HARGA, STOK_PRODUK)
VALUES ('tambah', SYSDATE, :new.nama_produk, :new.harga,
:new.stok_produk);
END;
DELIMITER ;
ORACLE SQL:
CREATE OR REPLACE TRIGGER transaksi_data_baru
AFTER INSERT ON tbl_transaksi FOR EACH
30
ROW
BEGIN
UPDATE TBL_PRODUK SET STOK_PRODUK=STOK_PRODUK-
:new.jumlah WHERE id_produk=:new.id_produk;
END;
4. Keselamatan Kerja
1. Sebelum melakukan langkah percobaan, pastikan kabel power terhubung ke Power
Supply.
2. Matikan komputer setelah praktikum selesai.
5. Langkah Kerja
MySQL
1. Buatlah sebuah trigger untuk melakukan logging aktivitas pada sebuah tabel
31
- INSERT
DELIMITER $$
CREATE TRIGGER user_logging
AFTER INSERT ON user
FOR EACH ROW
BEGIN
INSERT INTO user_log (id_user,nama,keterangan,waktu)
VALUES (new.id_user,new.nama,'new',now());
end $$
DELIMITER ;
Data yang telah ditambahkan pada table user akan tampil pada table user_log sebagai
fungsi trigger yang telah di setting sebelumnya
- UPDATE
DELIMITER $$
CREATE TRIGGER user_log_update
AFTER UPDATE ON user
FOR EACH ROW
BEGIN 32
INSERT INTO user_log (id_user,nama,keterangan,waktu)
VALUES (old.id_user,old.nama,'updated',now());
end $$
DELIMITER ;
- DELETE
DELIMITER $$
CREATE TRIGGER user_log_delete
AFTER DELETE ON user
FOR EACH ROW
BEGIN
INSERT INTO user_log (id_user,nama,keterangan,waktu)
VALUES (old.id_user,old.nama,'deleted',now());
end $$
DELIMITER ;
33
Siapkan data yang akan di DELETE
Data yang sudah di delete pada table user akan tampil riwayatnya pada table user
log
2. Buatlah sebuah trigger dimana aktivitas sebuah table akan memicu manipulasi data
(INSERT,UPDATE,ATAU DELETE)
DELIMITER $$
CREATE TRIGGER kamar_jual
AFTER INSERT ON pembelian_kamar
FOR EACH ROW
BEGIN
UPDATE kos set jumlah_kamar=jumlah_kamar-new.jumlah_kamar
WHERE id_kos=new.id_kos;
end $$
DELIMITER ;
Jika proses trigger berhasil maka jumlah kamar pada table kos akan berkurang
ORACLE
1. Buatlah sebuah trigger untuk melakukan logging aktivitas pada sebuah tabel 35
36
Tabel user_log nantinya akan mencatat perubahan terkait trigger terhadap tabel
user
- INSERT
Data yang di tambahkan pada table user akan muncul di table user_log
- UPDATE
37
Pada perintah kali ini saya akan meng-update data sebelumnya agar table user log
ke trigger karena perubahan pada table user
Pada kolom nama, saya meng-update data yang sebelumnya “Rafli” menjadi
“Muhammad Rafli” dan ini yang terjadi pada table user log
Data “rafli” di table log tidak akan terhapus melainkan menjadi riwayat data
sebelumnya
- DELETE
Pada perintah kali ini saya akan DELETE data “Muhammad rafli” agar table user
log ke trigger karena perubahan pada table user
Data “Muhammad Rafli” yang sudah dihapus pada table user akan muncul
riwayatnya pada table user log
2. Buatlah sebuah trigger dimana aktifitas pada sebuah tabel akan memicu manipulasi data
(INSERT atau DELETE atau UPDATE) pada tabel lain.
38
Buatlah table untuk aktivitas trigger manipulasi
CREATE TABLE TBL_KOS
(
ID_KOS NUMBER(38,0) NULL PRIMARY KEY
, NAMA_KOS VARCHAR2(255)
, COLUMN1 VARCHAR2(255)
, ID_PEMILIK NUMBER(38,0)
, JUMLAH_KAMAR NUMBER(38,0)
, FOTO VARCHAR2(255)
, TIPE VARCHAR2(255)
, DESKRIPSI VARCHAR2(255)
, LATTITUDE NUMBER(38,0)
, LONGITUDE NUMBER(38,0)
, ID_KEC NUMBER(38,0)
);
Dan tambahkan data juga pada tabel kamar seolah-olah kamar tersebut di booking
oleh seseorang
Jika trigger berhasil, maka otomatis jumlah_kamar pada table kos akan berkurang
40
KESIMPULAN
Trigger digunakan untuk memanggil satu atau beberapa perintah ! / secara otomatis
sebelumatau sesudah terjadi proses INSERT, UPDATE, dan DELETE dari suatu tabel.
Trigger sering digunakan , antara lain :
• Melakukan update data otomatis jika terjadi perubahan. 6ontohnya adalah dalam sistem
penjualan, jika dientri barang baru maka stock akan bertambah secara otomatis.
• Trigger dapat digunakan untuk mengimplementasikan suatu sistem log. !etiap terjadi
perubahan, secara otomatis akan menyimpan ke tabel log.
• Trigger dapat digunakan untuk melakukan 1alidasi dan 1erifikasi data sebelum datatersebut
disimp
41