BAB 1
PENDAHULUAN
1.1 Latar Belakang
Pada modul praktikum manajemen basis data terdapat beberapa kasus yang
diberikan yaitu membuat trigger untuk beberapa hal antara lain, auto increment yaitu
penambahan secara otomatis, memvalidasi waktu, menghapus entri dengan kondisi
tertentu, dan mengupdate data apabila suatu kondisi tertentu terjadi. Dengan menggunakan
materi yang berada pada modul tersebut maka kasus-kasus tersebut dapat diselesaikan.
1.2 Permasalahan
1. Bagaimana cara membuat trigger untuk auto_increment pada tabel karyawan untuk field
kodekar_ang?
2. Bagaimana cara membuat trigger untuk auto_increment pada tabel ruangan untuk field
no_ruangan?
3. Bagaimana cara membuat trigger untuk auto_increment pada tabel jadwal_shift untuk field
kode_shift?
4. Bagaimana cara membuat trigger untuk auto increment pada tabel pasien untuk field
kodepas_ang?
5. Bagaimana cara membuat trigger untuk auto increment pada tabel stock_obat untuk field
kodesto_ang?
6. Bagaimana cara membuat trigger untuk validasi waktu pada tabel antrian?
7. Bagaimana cara membuat trigger untuk menghapus entri pada tabel antrian ketika seorang
pasien sudah menjalani pemeriksaan dan mencatatkannya pada tabel Catatan Kesehatan?
8. Bagaimana cara membuat trigger untuk mengupdate stock obat pada tabel stock obat ketika
seorang pasien membeli resep dan dicatatkan pada tabel resep?
9. Apa saja kelemahan dari trigger auto_increment tersebut dan bagaimana cara
mengatasinya?
BAB 2
DASAR TEORI
2.1 Pengenalan Trigger
Sebuah trigger merupakan kode prosedural yang akan secara otomatis
dieksekusi akibat dipicu oleh sebuah event / kejadian pada suatu Tabel. Trigger
dapat mencegah akses terhadap data yang spesifik, melakukan logging atau
melakukan audit perubahan data. Trigger digunakan untuk pemrosesan kondisi
statemen DML (Data Manipulation Language) seperti INSERT, DELETE dan
UPDATE, Namun trigger tidak dapat digunakan dalam statemen SELECT.
Terdapat tiga kejadian (event) umum yang dapat menyebabkan trigger
dipicu. Pertama yaitu INSERT, berarti trigger dijalankan ketika terdapat sejumlah
data baru yang diinput. Kedua yaitu UPDATE, berarti trigger dijalankan ketika
terdapat data / record yang diubah. Ketiga yaitu DELETE, berarti trigger dijalankan
ketika terdapat data / record yang dihapus.
BAB 3
PEMBAHASAN
3.1 Pembuatan trigger untuk auto_increment pada tabel karyawan untuk field
kodekar_ang
Trigger tersebut dibuat dengan perintah CREATE TRIGGER, akan tetapi setelah
trigger berhasil di execute maka akan otomatis berubah menjadi ALTER TRIGGER.
Create sendiri berfungsi untuk membuat trigger tersebut, setelah trigger dibuat fungsi
create diganti menjadi Alter yang berfungsi untuk mengubah. Pada ON [dbo].[karyawan]
maksudnya adalah trigger tersebut dibuat untuk mentrigger tabel karyawan. Pada FOR
INSERT berarti trigger akan aktif apabila ada data yang diinput atau dimasukkan.
Kemudian, untuk membuat trigger auto increment dibutuhkan sebuah variabel. Variabel
dibuat dengan DECLARE @number INT yang berarti variabel baru dengan nama number
dan berjenis integer. Dengan memanfaatkan trigger yang ada pada modul, kita dapat
membuat auto increment hanya dengan mengganti nama tabel dan nama kolomnya saja.
3.2 Pembuatan trigger untuk auto_increment pada tabel ruangan untuk field
no_ruangan
Penjelasan pada trigger ini sama saja dengan penjelasan pada poin 3.1 hanya saja
tabel dan kolomnya disesuaikan dengan yang dibutuhkan.
3.3 Pembuatan trigger untuk auto_increment pada tabel jadwal_shift untuk field
kode_shift
Penjelasan pada trigger ini sama saja dengan penjelasan pada poin 3.1 hanya saja
tabel dan kolomnya disesuaikan dengan yang dibutuhkan.
3.4 Pembuatan trigger untuk auto_increment pada tabel pasien untuk field kodepas_ang
Penjelasan pada trigger ini sama saja dengan penjelasan pada poin 3.1 hanya saja
tabel dan kolomnya disesuaikan dengan yang dibutuhkan.
3.5 Pembuatan trigger untuk auto_increment pada tabel stock_obat untuk field
kodesto_ang
Penjelasan pada trigger ini sama saja dengan penjelasan pada poin 3.1 hanya saja
tabel dan kolomnya disesuaikan dengan yang dibutuhkan.
3.6 Pembuatan trigger untuk validasi waktu pada tabel antrian
Pada pembuatan trigger untuk validasi waktu digunakan FOR INSERT sehingga
apabila ada data yang masuk atau diinputkan maka trigger ini akan aktif. Selanjutnya
dilakukan update pada kolom antrian dengan mengatur atau SET kolom waktu menjadi
CURRENT_TIMESTAMP yaitu waktu saat ini. Kemudian pada WHERE no_antrian
berfungsi untuk memilih data tersebut agar hanya data yang memenuhi persyaratan pada
WHERE yang nantinya akan terganti menjadi waktu saat ini. Mengubah waktu menjadi
saat ini bertujuan agar waktu tersebut valid dan permasalahan teratasi. Cara membuat
trigger ini aktif adalah dengan menginputkan terlebih dahulu pada kolom waktu dengan
data sembarang akan tetapi sesuai dengan format datetime. Setelah selesai di input
selanjutnya tabel dijalankan maka waktu akan berubah dengan otomatis.
3.7 Pembuatan trigger untuk menghapus entri pada tabel antrian ketika seorang pasien
sudah menjalani pemeriksaan dan mencatatkannya pada tabel Catatan Kesehatan
Pada trigger ini digunakan AFTER INSERT agar apabila ada data yang dimasukkan
ke dalam catatan kesehatan maka trigger aktif dan akan menghapus data yang ada pada
antrian. Selanjutnya hanya membuat isi dari trigger agar berfungsi menghapus pada saat
data diinput. Dengan menggunakan DELETE FROM [dbo].[antrian] maka trigger akan
menghapus data pada tabel antrian apabila ada data yang masuk. Untuk menyeleksi agar
tidak semua data pada tabel antrian maka digunakan WHERE no_antrian = (SELECT TOP
1 no_antrian from Catatan_Kesehatan ORDER BY no_antrian DESC). Maksudnya adalah
fungsi WHERE akan memilih no_antrian pada tabel antrian yang sama dengan data paling
atas pada no_antrian di tabel Catatan_Kesehatan. Dengan begitu setiap data yang
dimasukkan pada Catatan_Kesehatan apabila mempunyai kesamaan pada no_antriannya
dengan tabel antrian maka seluruh data pada kolom yang memiliki no_antrian tersebut akan
otomatis terhapus.
3.8 Pembuatan trigger untuk mengupdate stock obat pada tabel stock obat ketika
seorang pasien membeli resep dan dicatatkan pada tabel resep
Pada trigger ini digunakan AFTER INSERT agar trigger aktif setelah ada data yang
masuk. Sebelumnya kita membutuhkan dua variabel yang berbeda dengan tujuan yaitu satu
variabel diisikan dengan data jumlah obat pada resep dan variabel yang kedua diisikan
dengan data jumlah stock obat yang ada. Untuk membuat variabel baru digunakan fungsi
DECLARE. Setelah variabel sudah dibuat, cara untuk menentukan atau set nilainya adalah
dengan cara berikut set @jumlahstock = (SELECT TOP 1 jumlah_stock_obat from
stock_obat ORDER BY kodesto_ang DESC). Maka variabel jumlahstock akan diisi
dengan nilai dari jumlah_stock_obat. Selanjut variabel yang kedua yaitu jumlahresep diisi
dengan cara berikut set @jumlahresep = (SELECT TOP 1 jumlah from resep ORDER BY
nama_obat DESC). Setelah masing-masing variabel sudah diisi dengan data tersebut
selanjutnya membuat fungsi untuk mengurangi agar stock berkurang sesuai dengan jumlah
pada resep dan mengembalikan nilainya ke stock_obat. Dengan menggunakan UPDATE
stock_obat SET jumlah_stock_obat = @jumlahstock-@jumlahresep dan WHERE
nama_obat = (SELECT TOP 1 nama_obat from inserted ORDER BY kodesto_ang DESC)
maka trigger selesai dibuat.
3.9 Kelemahan dari trigger auto_increment tersebut dan cara mengatasinya
Kelemahan dari trigger auto_increment tersebut yaitu pada bagian IF (SELECT
COUNT(*) FROM table) <= 1 SET @number = 1. Hal ini menyebabkan auto increment
hanya bisa dimulai dari angka urut 1, bukan dimulai dari nomor data pertama. Untuk
mengatasinya kelemahan ini harus diberi perubahan pada @number = 1 menjadi
@number = nilai primary key pada data pertama yang ada pada tabel. Dengan begitu
angka yang akan diberikan auto increment tidak harus dimulai dari angka 1 tetapi dimulai
dari nilai primary key pada data pertama yang ada pada tabel.
BAB 4
PENUTUP
Pada penutup dapat ditarik kesimpulan bahwa dengan menggunakan trigger kita dapat
mengubah suatu data sesuai dengan yang kita inginkan dan dengan syarat yang kita tentukan juga.
Hal ini tentunya akan sangat bermanfaat untuk mengelola suatu database. Auto increment sendiri
juga dapat digunakan untuk mempermudah pada saat menginput data agar tidak perlu lagi bersusah
payah mengurutkan nomor data tersebut. Untuk validasi waktu dapat digunakan untuk mengambil
data waktu real time yang tentunya akan sangat berguna juga untuk pengelolaan database yang
membutuhkan data waktu saat ini.
DAFTAR PUSTAKA
[Link] Di akses
pada 16 Juni 2019 pukul 21:26,
[Link] Di akses pada 16
Juni 2019 pukul 21:48,