Praktikum TRIGGER. Tujuan :

dokumen-dokumen yang mirip
Praktikum Basis Data 2017 TE UM MODUL 8 TRIGGER A. TUJUAN

TRIGGER TRIGGER 5/29/2017 HANI IRMAYANTI, S.KOM

Computer Science, University of Brawijaya. Putra Pandu Adikara, S.Kom. Trigger. Basis Data 2

PRAKTIKUM PL/SQL (Trigger) OLEH : WIRATMOKO YUWONO, ST

Bab 5. Database Trigger POKOK BAHASAN: TUJUAN BELAJAR: 5.1. PENDAHULUAN

BAB VIII FUNGSI, PL/PGSQL dan TRIGER

Pertemuan VII TRIGGERS

1. Mengetahui dan mengerti CURSOR 2. Mampu mengimplementasikan CURSOR dalam pemrograman di Oracle

TUGAS I PRAKTIKUM SISTEM BASIS DATA. Nama: Krisna Pandu Wibowo( )

Modul 6 Function dan Trigger

Obyek pada Oracle. Manajemen Obyek Basis Data dan Dictionary View. Obyek pada Oracle adalah segala hal yang bisa dibuat di Oracle, seperti:

Basis Data Spasial Modul 2

Mudafiq Riyan Pratama

Transaction dan Trigger. M. Saefudin SKom, MMSI

TRIGGER. Tujuan Mata Kuliah. Tools yang digunakan. Sesi7 : TRIGGER. Praktikum Pemrograman Client Server Database Hadi Kusumah, S.T.

MODUL 1. Pembuatan tabel, pendefinisian constraint, export dan import PRAKTIKUM BASIS DATA LANJUT TEKNIK PERANGKAT LUNAK UNIVERSITAS PGRI RONGGOLAWE

Praktikum Basis Data 14 Structure Query Language 2

IMPLEMENTASI TRIGGER, STORED PROCEDURE, FUNCTION DAN VIEW PADA MYSQL DALAM PERANCANGAN SYSTEM INVENTORY CAFFE BOULEVARD JAYAPURA

MODUL 2 PENGENALAN DATA DEFINITION LANGUAGE (DDL) & DATA MANIPULATION LANGUAGE (DML)

JobsheetTEUM MODUL VI TRIGGER

Pertemuan DDL INDIKATOR. Modul Teori Database Aknela

CONSTRAINT clients_client_num_pk PRIMARY KEY (client_number));

Kontrak Kuliah. Trigger dan Scheduled Events. Edi Sugiarto, S.Kom, M.Kom

Contoh SQL Constraint

Agenda SQL. Pemakai SQL. Kemampuan SQL 02/12/2010 STRUCTURED QUERY LANGUAGE (SQL) Structured Query Language (SQL) (Pert. 9)

Pertemuan 10. Bahasa Query Terapan

Basis Data 2. Procedure dan Function Database. Arif Basofi, S.Kom. MT. Teknik Informatika, PENS

B a s i s D a t a C H A P T E R. SQL Operasi DML. Arif Basofi PENS 2015

Data Manipulation Language (DML) & Data Control Language (DCL) pada Database

PERTEMUAN 10 PEMBUATAN TABEL

Praktikum 2 Mata Kuliah : Sistem Pengolahan Basis Data Dosen : Nandang Hermanto

Membuat Function, Stored Procedur dan View pada MySQL

Praktikum Basis Data 2017 TE UM

LAPORAN TUGAS BASIS DATA I

STRUCTURE QUERY LANGUAGE DDL & DML

MODUL PEMPROGRAMAN SQL TINGKAT DASAR 1 STANDAR KOMPETENSI: MENERAPKAN BAHASA PEMPROGRAMAN SQL TINGKAT DASAR SMK NEGERI 1 MAJALENGKA

Modul Pembangunan Aplikasi Basis Data Lanjut 2014

SEKOLAH TINGGI TEKNOLOGI INDONESIA TANJUNG PINANG

B a s i s D a t a - 1 C H A P T E R. SQL Operasi DML. Copyright 2005 PENS-ITS

INTEGRITAS BASIS DATA. OLEH : Slamet Sn Wibowo Wicaksono

Contoh SQL Constraint

Basis Data. DDL & Aturan Referential

Sejarah(1) Sejarah(2) STRUCTURE QUERY LANGUANGE (1) Definisi SQL

PL / SQL. Arif Basofi

Cara Membuat Trigger di MySQL

Database Management System. Program yang memungkinkan item-item dalam suatu database disusun, diolah dan diperbaharui

Nama : Parisaktiana Fathonah NIM : Kelas : Prak Sistem Basis Data TI-2 B malam

B a s i s D a t a - 1. SQL Operasi DDL. Data Definition Laguange. Copyright 2005 PENS-ITS

PERTEMUAN 9 MANIPULASI DATA

Oracle Academic Initiative

Cara Membuat Trigger di MySQL

Mahasiswa mengetahui & memahami mengenai DML, DCL di SQL. (Isi_Field_1, Isi_Field_2,, Isi_Field_N) ;

MODUL PRAKTIKUM BASIS DATA II

STRUCTURE QUERY LANGUAGE (SQL)

MODUL I PENGENALAN MYSQL

Konsep Dasar. Relatsional dan RDBMS User dan Schema Database Membuat Tabel dan Mendefinisikan Constraint Input Data ke dalam Tabel

LAPORAN PRAKTIKUM IV BASIS DATA (SISTEM BERKAS - LAN)

Karena VIEW dibentuk tanpa mencantumkan nama kolom baru, maka v1 mewarisi kolom yang yang dipilih pada tabel mahasiswa_xxx.

MODUL II. Instalasi OracleXE Dan SQL

Oracle Academic Initiative

Constraint dan Manajemen Data dalam Timezone Berbeda

Persiapan Table Untuk Latihan Sebelum kita berkenalan lebih jauh dengan Trigger, mari kita buat terlebih dahulu, struktur table yang dibutuhkan.

PENGANTAR TEKNOLOGI SISTEM INFORMASI MANAGEMENT 2

LAPORAN PRAKTIKUM BASIS DATA

SISTEM BASIS DATA Pertemuan 11 Structure Query Language DDL - DML

B a s i s D a t a - 1 C H A P T E R. SQL Operasi DML. Copyright 2005 PENS-ITS

SQL. Brigida Arie Minartiningtyas, M.Kom

VIEW : Tabel Virtual VIEW 5/29/2017

Praktikum MONITORING AND RESOLVING LOCK CONFLICTS. Tujuan :

PRAKTIKUM SISTEM BASIS DATA TUGAS 1 MANGROVE PERCETAKAN. Penyusun : Nama : Edi Sastrawijoyo NIM : Prodi : Teknik Informatika

MENGENAL SYNTAX DML PADA SQL

Basis Data Relational


Database Interfaces. By: Arif Basofi

MODUL II SQL A. TUJUAN

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET PEMROGRAMAN WEB Semester: 2 MYSQL 200 menit No.: Job: 12 Tgl: Hal.

Sistem Basis Data Danny Kriestanto, S.Kom., M.Eng

BAB 4 : Interaksi PL/SQL dengan Oracle Server

MODUL 6 JDBC (JAVA DATABASE CONNECTIVITY)

BAB II PEMBUATAN DAN MANAJEMEN TABLE

SQL DASAR BASIS DATA. Rajif Agung Yunmar, S.Kom., M.Cs.

Pengenalan Structured Query Language

TUGAS PRAKTIKUM SISTEM BASIS DATA

Pertemuan IV CONDITION & HANDLER CURSOR

TUGAS PRAKTIKUM SISTEM BASIS DATA

Pertemuan I KONSEP DASAR STORED ROUTINES

Introduction to SQL. Database Programming. 2 nd Chapter

Data Manipulation Language (DML)

INTERNET PROGRAMMING DATABASE

MODUL V DATA MANIPULATION LANGUAGE (DML) 1

Modul 3. Oleh : Mohammad Sholikin. 1

MODUL 4 INTERNET PROGRAMMING DATABASE

Triggers. by: Ahmad Syauqi Ahsan

Praktikum Basis Data. By. Rita Wiryasaputra, ST., M. Cs.

Pemrograman Web. Koneksi dan Manipulasi Basis Data. 7 Adam Hendra Brata

PRAKTIKUM SISTEM BASIS DATA

Konsep Sistem Informasi B. BAB 2 - SQL Overview

Perangkat Lunak Pengembangan Web

Pemrograman Web Lanjut 2017

Oracle Academic Initiative

Transkripsi:

Praktikum 6 TRIGGER Tujuan : 1. Mengetahui dan memahami trigger dalam Oracle 2. Mengerti manfaat dan batasan penggunaan trigger 3. Mampu mengimplementasikan trigger dalam Oracle Alat dan Bahan : 1. Buku literatur mengenai PL/SQL ORACLE, terutama yang menggunakan DBMS ORACLE 10g. 2. Modul praktikum BASIS DATA LANJUT 3. Modul praktikum DATA MINING DAN WAREHOUSING Landasan Teori : 1. Definisi Merupakan blok PL/SQL yang memiliki fungsi hampir sama dengan procedure maupun function, hanya saja, jika procedure atau function dijalankan secara eksplisit lewat pemanggilan procedure atau function tersebut, sedangkan untuk trigger, dijalankan secara implisit melalui perintah insert, delete atau update. 2. Manfaat Manfaat trigger: a. Mengatur integritas dari constraint yang kompleks yang tidak mungkin ditangani oleh sintaks-sintaks pembuatan tabel. b. Mencegah transaksi yang tidak valid c. Memperbaiki keamanan database dengan menyediakan audit yang lebih kompleks mengenai informasi perubahan database dan user siapa yang melakukan perubahan. d. Secara otomatis memberi sinyal program lain untuk melakukan sesuatu jika isi tabel diubah. 3. Batasan Trigger mempunyai batasan a. Tidak dapat menggunakan perintah commit dan rollback, selain itu juga tidak dapat memanggil procedure, function atau package yang menggunakan perintah commit dan rollback. b. Tidak dapat diimplementasikan pada kolom pada suatu tabel yang memilki constraint, jika pada akhirnya akan menyebabkan pelanggaran constraint. Biasanya terjadi akibat modifikasi pada primary key

4. Struktur Dasar Trigger SINTAKS CREATE [or replace] TRIGGER nama_trigger ( BEFORE AFTER ) ( INSERT UPDATE [OF nama_kolom,..] DELETE )ON nama_tabel [] [WHEN (kondisi)] Deklarasi tipe data Trigger body Contoh: CREATE OR REPLACE TRIGGER bef_upd_row_keuangan BEFORE Trigger Timing UPDATE OF donasi ON keuangan Trigger Event Trigger Type WHEN (new.donasi => 0) Trigger Restriction Trigger DBMS_OPUTPUT.PUT('Donasi terbaru:' :new.donasi); Body / Trigger dijalankan setelah dilakukan contoh perintah berikut : UPDATE keuangan SET donasi=10000000 WHERE nim= 30108001 Bagian Trigger Keterangan Nilai yang mungkin Trigger timing Menunjukkan kapan trigger akan dieksekusi relatif terhadap suatu event. BEFORE AFER INSTEAD OF Trigger event Jenis manipulasi data pada tabel/view yang menyebabkan trigger terpacu. INSERT UPDATE DELETE CREATE ALTER DROP STARTUP SHUTDOWN LOGOFF LOGON SERVERERROR SUSPEND When (boolean value) Trigger restriction (optional) Batasan yang mengizinkan pengeksekusian trigger. Trigger type Berapa kali body trigger dieksekusi. ROW-level STATEMENT-level Trigger body Berisi algoritma aksi yang akan dilakukan. Blok PL/SQL Nama trigger sebaiknya dengan jelas mencerminkan table yang diaplikasikan, Perintah DML Trigger, status before/after dan apakah row level atau statement level. Misalnya trigger BEFORE UPDATE dengan row level pada table KARYAWAN dapat diberi nama bef_upd_row_karyawan. Triggering statement adalah statement/perintah yang menyebabkan trigger tereksekusi.

5. Jenis-jenis Trigger 1. Row-level dan Statement-level Trigger Ketika membuat sebuah trigger, kita dapat menentukan berapa kali aksi trigger di dalamnya dieksekusi: Row-level trigger dieksekusi untuk setiap row yang dimanipulasi pada suatu transaksi. Dengan kata lain, row-level trigger mengerjakan trigger action satu kali untuk setiap row yang dimanipulasi. Penerapan trigger ini ditunjukkan oleh adanya klausa. Row-level trigger berguna jika kode dalam trigger body bergantung pada setiap baris yang terpengaruh oleh triggering statement. Statement-level trigger dieksekusi satu kali pada saat transaksi, tanpa memperhatikan jumlah row yang terlibat. Misalnya, jika terdapat suatu transaksi yang memasukkan 1000 baris ke dalam tabel, maka statement-level trigger hanya akan dieksekusi sekali saja. Statement-level trigger berguna jika kode dalam trigger body tidak bergantung pada baris yang terpengaruh oleh triggering statement. Secara default trigger yang dibuat adalah statement-level trigger. 2. Before and After Trigger Dalam pembuatan sebuah trigger kita dapat menentukan trigger timing yaitu apakah trigger body akan dieksekusi sebelum atau sesudah triggering statement dieksekusi. Before trigger menjalankan trigger body sebelum event atau triggering statement. Oleh karena itu, trigger ini cocok digunakan untuk mendeteksi bagaimana event boleh dilanjutkan maupun tidak. After trigger menjalankan trigger action setelah event terjadi. Kita mungkin akan berhubungan dengan data lama (old) dan data baru (new) yang terjadi dalam transaksi. Dalam trigger, dikenal istilah alias atau referensi, yaitu sejenis variabel yang menyimpan nilai dari suatu kolom dalam tabel. Alias terbagi menjadi dua, yaitu: Untuk mendapatkan data baru pada sebuah tabel di dalam trigger body, dapat dilakukan dengan perintah sebagai berikut: :NEW.nama_kolom Untuk mendapatkan data lama pada sebuah tabel di dalam trigger body, perintah yang digunakan: :OLD.nama_kolom Referensi nilai kolom di trigger: insert (new.nama_kolom) update (new.nama_kolom dan old.nama_kolom) delete (old.kolom_name) Before dan After trigger tidak dapat diimplementasikan pada view. 3. Instead Of Trigger Instead of trigger hanya akan dieksekusi bagi view dan diaktivasi jika terjadi perubahan pada base table (tabel asli). Proses yang akan dilakukan oleh triggering statement akan digantikan oleh aksi pada trigger body. 4. System Event & User Event Trigger Penggunaan trigger dapat dikelompokkan menurut event yang terjadi: System events Database startup & shutdown Server error message events User events

User logon and logoff DDL statements (CREATE, ALTER, and DROP) DML statements (INSERT, DELETE, and UPDATE) Contoh 1: Tabel T_HISTORY apabila ada user yang mengubah data pada tabel KEUANGAN. Siapa usernya beserta waktu pengubahan data dan keterangan. Pertama buat dahulu tabel T_HISTORY dengan sintak dibawah ini: Langkah kedua adalah membuat trigger untuk keperluan di atas sintaksnya sebagai berikut: Kemudian lakukan pengujian pada trigger di atas dengan mengisi data pada tabel keuangan dengan sintaks berikut: Untuk melihat tabel T_HISTORY, gunakan sintaks berikut: Contoh 2 : SQL> CREATE TABLE T_HISTORY(NAMA_USER VARCHAR2(9), WAKTU VARCHAR2(25), KET VARCHAR2(50)); Table created. CREATE OR REPLACE TRIGGER HISTORY_KEUANGAN AFTER INSERT OR DELETE ON keuangan INSERT INTO T_HISTORY(NAMA_USER,WAKTU,KET) VALUES (USER, TO_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS'), 'Terjadi perubahan'); DBMS_OUTPUT.PUT('TERJADI PENGUBAHAN PADA TABEL KEUANGAN'); SQL> INSERT INTO KEUANGAN VALUES ('30108001','10000000','lunas'); TERJADI PENGUBAHAN PADA TABEL KEUANGAN 1 row created. SQL> SELECT * FROM T_ HISTORY; NAMA_USER WAKTU KET PELATIHAN 10-AUG-2003 21:34:45 Terjadi perubahan CREATE OR REPLACE TRIGGER BEF_UPD_MAHASISWA BEFORE UPDATE OF NAMA ON MAHASISWA VNAMA_BARU VNAMA_LAMA MAHASISWA.NAMA%TYPE; MAHASISWA.NAMA%TYPE; VNAMA_BARU := :NEW.NAMA; VNAMA_LAMA := :OLD.NAMA; DBMS_OUTPUT.PUT_LINE( TELAH DIUPDATE ); DBMS_OUTPUT.PUT_LINE( NIM MAHASISWA : :OLD.NIM); DBMS_OUTPUT.PUT_LINE( NAMA MAHASISWA LAMA : VNAMA_LAMA); DBMS_OUTPUT.PUT_LINE( NAMA MAHASISWA BARU : VNAMA_BARU);

Contoh 3 : Misal terdapat tabel STATUS_MHS untuk menyimpan status apakah donasi mahasiswa telah dilunasi CREATE OR REPLACE TRIGGER AFT_INS_KEUANGAN AFTER INSERT ON KEUANGAN WHEN (NEW.donasi > 0) IF INSERTING THEN UPDATE STATUS_MHS SET STATUS = lunas WHERE NIM = :NEW.nim; END IF; 6. Cascading Trigger Suatu trigger bisa memicu dijalankannya trigger lain, sehingga terjadi operasi trigger berantai. Dalam cascading operation seperti ini, dapat terjadi kesalahan ORA-04091 atau table is mutating. Hal ini disebabkan karena ada trigger action yang mencoba melakukan operasi query terhadap tabel yang sedang dimodifikasi. Untuk menghindari kesalahan seperti ini, maka trigger harus dimodifikasi agar tidak melakukan pengaksesan tabel yang sedang digunakan. CREATE OR REPLACE TRIGGER aft_del_row_keuangan AFTER DELETE ON keuangan n number; SELECT COUNT(DISTINCT(nim)) INTO n FROM keuangan; DBMS_OUTPUT.PUT_LINE( jumlah mahasiswa yang memberi donasi sebanyak n); ketika dijalankan perintah berikut SQL> DELETE keuangan WHERE nim = 30108001 Pasti akan muncul kesalahan bahwa tabel keuangan is mutating 7. Status Trigger Untuk mengubah status sebuah trigger dijalankan sintaks berikut Sintaks: ALTER TRIGGER nama_trigger DISABLE ENABLE; Keterangan: DISABLE : Untuk menonaktifkan trigger yang sudah dibuat ENABLE : Untuk mengaktifkan kembali trigger yang sudah di DISABLE. Contoh : Untuk men-disable trigger UPDATE_MAHASISWA, gunakan sintaks berikut: ALTER TRIGGER UPDATE_MAHASISWA DISABLE; Untuk mangaktifkan atau menonaktifkan semua trigger yang diasosiasikan pada sebuah tabel dapat menggunakan sintaks: ALTER TABLE nama_tabel [DISABLE ENABLE] ALL TRIGGER; Sedangkan untuk menghapus trigger digunakan perintah berikut : DROP TRIGGER nama_trigger;

Tugas Pendahuluan : 1. Jelaskan perbedaan function, procedure dan package. 2. Jelaskan maksud trigger di bawah ini : CREATE TRIGGER ledger_after_ins_row BEFORE INSERT ON LEDGER_AUDIT 3. Tambahkan pada database yang telah dibuat pada modul sebelumnya sehingga memenuhi ERD sebagai berikut, kemudian lakukan EXPORT sehingga dapat dimanfaatkan pada pengerjaan praktikum : ID JENIS AG AK BH BI EK FL FI IT MN UM CALL INSERT_LEDGER_DUP(:NEW.Action_Date,:NEW.Action, :NEW.Item,:NEW.Quantity,:NEW.QuantityType,:NEW.Rate, :NEW.Amount,:new.Person); KATEGORI Agama Akuntansi Bahasa Biologi Ekonomi Filsafat Fisika Komputer dan Internet Manajemen Umum id_supplier id_buku judul pengarang nama supplier punya buku punya 1 n n 1 alamat no_telp harga stock id_jenis jenis kategori Percobaan : 1. Buatlah sebuah trigger dimana ketika id_jenis pada tabel jenis diubah, maka id_jenis pada tabel buku juga ikut berubah. 2. Buatlah trigger dimana trigger tersebut akan menjamin nilai stok pada tabel buku berkisar antara 0 sampai 100.