trigger dan scheduled eventsdinus.ac.id/repository/docs/ajar/3._edi_sbdlanjut... · 2016-10-10 ·...

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

Upload: vucong

Post on 14-May-2019

266 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Kontrak Kuliah

Trigger dan Scheduled Events

1

Edi Sugiarto, S.Kom, M.Kom

Page 2: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Triggers

2

Page 3: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Trigger

• Merupakan sekumpulan sintaks SQL yang

secara otomatis akan dieksekusi secara implisit

oleh database server ketika suatu event terjadi.

• Trigger akan dijalankan ketika perintah insert,

delete, update dijalankan pada tabel.

• Beberapa penggunaan trigger misalnya:

– Membuat log untuk mencatat penggunaan tabel

– Mengupdate tabel lain jika terjadi perubahan pada

suatu tabel.

– Menjalankan perhitungan-perhitungan otomatis.

3

Page 4: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Keuntungan Trigger

• Keuntungan penggunaan Trigger antara lain:

– Standarisasi proses.

• Trigger dibuat sekali dan tersimpan dalam database, sehingga semua client merupakan pengguna trigger.

– Menyederhanakan Pemrograman.

– Mudah diperbaharui

– Kecepatan dan efisiensi proses

4

Page 5: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Membuat Trigger

• Untuk mendefinisikan trigger digunakan perintah

CREATE TRIGGER diikuti dengan nama trigger.

• Komponen trigger

– Event

• Kejadian yang dapat dikarenakan karena INSERT, UPDATE, or DELETE.

– Activation Time

• Menyatakan kapan triger akan terjadi sesuai dengan trigger event. AFTER event atau BEFORE event.

– Subject Table

• Menyatakan tabel yang akan dikenakan pada trigger.

5

Page 6: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

– Body

• Berisi statement SQL yang akan dieksekusi.

• Sintaks:

CREATE TRIGGER trigger_name trigger_time

trigger_event ON table_name FOR EACH ROW

BEGIN

[statement]

END.

6

Page 7: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Praktikum 3.1

• Sebelum memulai praktikum buatlah tabel

mahasiswa_log dengan stuktur sbb:

7

Page 8: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

• Selanjutnya membuat trigger untuk menyimpan

informasi ke log mengenai penambahan data

mahasiswa.

8

Page 9: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

• Untuk melihat apakah trigger telah terbentuk anda

dapat menulis perintah berikut:

show create trigger

trigger_mahasiswa;

• Selanjutnya tambahkan satu record pada tabel

mahasiswa.

9

Page 10: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

• Selanjutnya lihat pada tabel mahasiswa_log,

seharusnya akan bertambah satu record.

• Untuk melihat trigger yang ada pada suatu table

dapat menggunakan perintah berikut:

SHOW TRIGGERS FROM basisdatalanjut WHERE

`table`='mahasiswa‘\G;

10

Page 11: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Menggunakan nilai OLD/NEW

• Didalam sebuah trigger dimungkinkan untuk

mendapatkan nilai dari sebuah field baik

sebelum atau setelah proses.

• Terdapat dua keyword yakni NEW dan OLD.

• NEW digunakan untuk mendapatkan nilai record

yang akan diproses.

• OLD digunakan untuk mendapatkan nilai record

yang telah diproses.

11

Page 12: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Praktikum 3.2

• Berikut ini contoh trigger dengan menggunakan

OLD/NEW value untuk menambahkan record ke

mahasiswa_log ketika ada perubahan nama

mahasiswa.

12

Page 13: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

• Selanjutnya lakukan perubahan pada nama

mahasiswa.

• Kemudian cek pada tabel mahasiswa_log

13

Page 14: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Latihan

• Buatlah tabel barang dengan desain sbb:

• Selanjutnya tambahkan record pada tabel

barang:

14

SOAL 1 :

Page 15: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

• Selanjutnya buatlah tabel pembelian dengan

struktur tabel sbb:

15

Page 16: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

• Selanjutnya buatlah store prosedur untuk

menyimpan data pembelian dengan nama

proc_beli(IN vnofaktur char(20), IN

vtglbeli date, IN vkode_brg char(10),

vqty int);

• Sehingga ketika dijalankan akan menyimpan

data ke tabel beli termasuk hargajual dan total

bayar.

16

Page 17: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

• buatlah trigger untuk melakukan proses update

stok barang ketika terjadi pembelian.

• Ketika pembelian stok barang akan ditambah

sejumlah qty pembelian.

• Hasilnya sbb:

17

SOAL 2 :

Stok pada barang BRG-

0003 adalah 98

Page 18: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

• Lakukan pembelian untuk barang dg kode BRG-

0003 sebanyak 5 item

18

Stok pada barang BRG-

0003 menjadi 103

Page 19: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Triggers dan Constraint

• Pada dasarnya trigger akan menjalankan

perintah berdasarkan event yang terjadi baik

AFTER ataupun BEFORE.

• Tidak seperti Oracle yang memiliki mekanisme

untuk membatalkan eksekusi trigger. MySQL

tidak memiliki mekanisme tersebut.

• Namun terdapat beberapa cara untuk memaksa

trigger membatalkan eksekusi diantaranya:– Memasukkan nilai pada field yang tidak ada

– Memasukkan nilai null pada field dengan batasan not null

– Atau memanggil subrutin yang belum didefinisikan.19

Page 20: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

• Berikut ini contoh memberikan batasan kepada

trigger untuk membatalkan perintah ketika

batasan tidak terpenuhi.

• Dengan menggunakan tabel barang dan tabel

pembelian pada latihan sebelumnya, buatlah

trigger untuk membatalkan perintah ketika kode

barang yang dimasukkan pada tabel pembelian

tidak terdapat pada tabel barang.

20

Page 21: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Praktikum 3.3

• Berikut ini contoh trigger yang dapat digunakan

untuk membatalkan perintah ketika kode barang

yang dimasukkan pada tabel pembelian tidak

ada pada tabel barang.

21

Page 22: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

• Selanjutnya coba masukkan record baru pada tabel beli, dengan catatan masukkan kode barang yang tidak terdapat pada tabel barang.

22

Maka perintah insert

akan dibatalkan karena

muncul kesalahan pada

trigger.

Page 23: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Ada Pertanyaan ?

Page 24: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Scheduled Event

24

Page 25: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Scheduled Event

• Triggers merupakan kumpulan perintah SQL

yang dikerjakan ketika suatu event terjadi, event

tersebut terjadi berkaitan dengan aktivitas

manipulasi pada tabel.

• MySQL menyediakan pendekatan lain dalam

otomatisasi database selain trigger yakni dalam

bentuk scheduled event.

• Scheduled Event menyediakan framework untuk

menjalankan satu atau lebih perintah SQL

berdasarkan waktu terntentu.

25

Page 26: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

• Sintaks:

CREATE EVENT nama_event

ON SCHEDULE schedule

DO

BEGIN

[statement]

END

26

Page 27: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

• schedule berisi nilai berikut:

– AT timestamp

– EVERY interval

[STARTS timestamp ] [ENDS timestamp]

• Interval meliputi:

27

• Year

• Quarter

• Month

• Day

• Hour

• Minute

• Week

• Second

Page 28: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Praktikum 3.4

• Sebelum membuat scheduled event pertama

pastikan bahwa variabel event_scheduler

bernilai ON.

• Selanjutnya buat tabel mahasiswa1 dengan

struktur sama dengan tabel mahasiswa.

28

Page 29: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

• Sementara tabel mahasiswa1 masih kosong.

• Selanjutnya buat scheduled event yang akan memasukkan data dari tabel mahasiswa ke tabel mahasiswa1

29

Page 30: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

• Pada scheduled event tersebut ditentukan waktu

yaitu pada tanggal 19-09-2015 jam 15:05:00,

maka setelah jam tersebut dapat dilihat pada

tabel mahasisa1. jika event bekerja tabel akan

berisi data mahasiswa seperti pada tabel

mahasiswa.

30

Page 31: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

• Untuk mengatur sebuah event menjadi disable,

dapat menggunakan perintah berikut:

ALTER EVENT nama_event DISABLE;

31

Page 32: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Praktikum 3.5

• Berikut ini adalah contoh schedule event untuk

membackup tabel mahasiswa setiap satu menit

sekali.

32

Page 33: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

• Setelah beberapa menit dapat dilihat hasilnya sbb:

33

Setelah 4 menit

terbentuk 4 table

backup mahasiswa

Page 34: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

• Jika event tidak diperlukan lagi dapat didisable

atau di drop event.

34

Page 35: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Ada Pertanyaan ?

Page 36: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Latihan

1. Buatlah tabel-tabel berikut.

36

Page 37: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

2. Buatlah store prosedur untuk menyimpan data

pasien dengan nama “input_pasien”.

3. Buatlah tabel pasien_log, kemudian buatlah

trigger untuk menyimpan data ke tabel

pasien_log ketika terjadi penambahan/

pengubahan/penghapusan data

37

Page 38: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

4. Buatlah trigger dengan nama

input_rawat_jalan(), tambahkan constraint pada

trigger tersebut untuk membatalkan inputan

pada tabel rawat_jalan jika kode pasien atau

kode poliklinik tidak ditemukan.

5. Buatlah scheduled event untuk melakukan

backup tabel rawat_jalan setiap 5 menit sekali.

38

Page 39: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Terima kasih

39

Page 40: Trigger dan Scheduled Eventsdinus.ac.id/repository/docs/ajar/3._EDI_SBDLANJUT... · 2016-10-10 · Kontrak Kuliah Trigger dan Scheduled Events 1 Edi Sugiarto, S.Kom, M.Kom

Daftar Pustaka

• Vikram Vaswani (2010),”MySQL Database

Usage & Administration”,McGraw-Hill

Companies.

40