Modul III Trigger

8
MODUL III TAMBAHAN MATERI SQL LANJUTAN Oleh : I WAYAN DEBY CAKRA WINDARTA JURUSAN AKUNTANSI UNIVERSITAS NEGERI SURABAYA

description

SQL SERVER 2005

Transcript of Modul III Trigger

Page 1: Modul III Trigger

MODUL IIITAMBAHAN MATERI SQL LANJUTAN

Oleh :I WAYAN DEBY CAKRA WINDARTAJURUSAN AKUNTANSIUNIVERSITAS NEGERI SURABAYA

Page 2: Modul III Trigger

ATURAN

1. MODUL INI DIGUNAKAN UNTUK PERTEMUAN KEENAM PERKULIAHAN DATABASE DAN PEMROGRAMAN.

2. MAHASISWA DAPAT MENGGUNAKAN BERBAGAI MACAM REFERENSI TERMASUK BOOKS ONLINE YANG DISEDIAKAN OLEH MICROSOFT PADA SITE HTTP://WWW.MICROSOFT.COM/EN-US/DOWNLOAD/DETAILS.ASPX?ID=4152

3. IKUTILAH SELURUH LANGKAH-LANGKAH DIBAWAH INI DENGAN MEMBACA SECARA PERLAHAN.

SELAMAT MENCOBA

Page 3: Modul III Trigger

MATERI

PENGGUNAAN SET DAN DECLAREPerintah declare digunakan untuk mendefinisikan suatu variable dan set digunakan untuk mengisi data pada variabel yang di declare.

Contoh penggunaandeclare @kode char(10)set @kode='111111111' as cobaselect @kode

dan tampilannya adalah

PENGGUNAAN STORED PROCEDUREStored procedure adalah kumpulan perintah pada yang ada pada database SQL. Format pembuatan stored procedure adalah CREATE { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ] [ { @parameter [ type_schema_name. ] data_type } [ VARYING ] [ = default ] [ OUT | OUTPUT ] ] [ ,...n ] [ WITH <procedure_option> [ ,...n ] ][ FOR REPLICATION ] AS { <sql_statement> [;][ ...n ] | <method_specifier> }

Untuk dapat menjalankan stored procedure dapat dilakukan dengan perintah

exec nama_stored_procedure.

Untuk mengubah stored procedure dapat dilakukan dengan perintah

Alter nama_stored_procedure

Stored Procedure akan banyak anda gunakan dalam praktek pemrograman dalam delphi nanti sehingga anda diwajibkan untuk dapat memahami dalam perancangan dan penggunaan stored procedure secara baik.

Contoh penggunaan stored procedure1. Stored procedure untuk menampilkan data karyawan

create procedure tdatakaryawanasselect * from mkaryawan

untuk memanggil stored procedure dapat dengan perintah

exec tdatakaryawan

Page 4: Modul III Trigger

tampilan dari hasil pemanggilan stored procedure

2. Merubah perintah stored procedure tdatakaryawanalter procedure tdatakaryawanasselect kodekar, namakar, status from mkaryawan

dan jalankan dengan perintah

exec tdatakaryawan

tampilan dari hasil pemanggilan stored procedure

3. Stored procedure untuk menampilkan data karyawan dengan kriteria tertentuDalam kasus ini kriteria tertentu adalah data karyawan berdasarkan inputan kode karyawan.

create procedure tdatakaryawankhusus@kode char (4)asselect kodekar, namakar, status from mkaryawan where kodekar=@kode

perintah untuk memanggil stored procedure diatas adalah dengan exec tdatakaryawankhusus ‘k-01’ (DIISIKAN INPUTAN KARENA ITU MERUPAKAN KRITERIA DARI PEMANGGILAN DATA)

tampilan dari hasil pemanggilan stored procedure

Page 5: Modul III Trigger

4. Stored procedure untuk menampilkan nostruk, tanggal transaksi, kode persediaan, nama persediaan, harga jual, diskon penjualan antara tanggal 01/01/2009 sampai dengan 12/01/2009 dan nama persediaannya adalah yang berkaitan dengan kata “ Pria ”.

create procedure tdjualbaju@tglawal datetime, @tglakhir datetime, @nama varchar(10)asselect @nama='% '+rtrim(@nama)+' %';select a.nostruk, a.tglstruk, b.kodeper, c.namaper, b.hjual, b.hjual*b.qty*b.diskon/100 asdiskonfrom tpenjualan a inner join tdetpenjualan bon a.nostruk=b.nostruk inner join mpersediaan con b.kodeper=c.kodeper where c.namaper like @nama and a.tglstruk between @tglawal and @tglakhir

Perintah untuk memanggil stored procedureexec tdjualbaju '01/01/2000','01/01/2010','Pria'

tampilan dari hasil pemanggilan stored procedure

5. Stored procedure untuk menyimpan data karyawancreate procedure tambahkaryawan@kodek char (4),@nama varchar (50), @tgl datetime, @status char (1)asinsert into mkaryawan values(@kodek,@nama,@tgl,@status)

perintah memanggil stored procedureexec tambahkaryawan 'c-01','nama coba baru','01/01/2011','1'

tampilan dari hasil pemanggilan stored procedure

(1 row(s) affected)Hasil dapat di cek melalui perintah Select * from mkaryawan

Page 6: Modul III Trigger

Tugas buatlah prosedur atas semua transaksi di soal Quis Soal A.

UNIONUnion digunakan untuk menggabungkan beberapa query. Beberapa aturan Union :

1. Query-query yang akan digabungkan harus mempunyai banyak kolom yang sama, urutan kolom yang sama dan tipe data yang mirip.

2. Jika memakai klausa INTO pada salah satu query, maka harus meletakkan query tersebut sebagai query yang pertama.

3. Klausa Group By dan Having dapat digunakan pada query individual.4. Klausa order by dan compute hanya diperbolehkan pada akhir operator UNION, untuk

mendefinisikan urutan dari hasl akhir atau untuk menghitung nilai akhir.

Contoh penggunaan :Anda ingin menampilkan jumlah barang yang laku di pasaran pada tanggal '01/01/2009' dan'09/01/2009' dan terdapat kata ‘Bali’, ‘Yogya’ dan ‘Malang’

SUBQUERYSubquery adalah sebuah pernyataan perintah SELECT dalam perintah query lainnya. Bentuk umum subquery adalah Select nama_field from nama_tabel dan untuk tambahan perintah where yaitu :

WHERE expression [NOT] IN (subquery) WHERE expression comparison_operator [ANY | ALL] (subquery) WHERE [NOT] EXISTS (subquery)

Beberapa contoh pemakaian subquery

Page 7: Modul III Trigger

1. Tampilkan data terkait dengan informasi data barang yang hbeli diatas sama dengan persediaan yang bernama ‘Gelang Putih’.select * from mpersediaan where hbeli =(select hbeli from mpersediaan where namaper like 'Gelang Putih')cara query bekerja1. Dapatkan informasi hbeli melalui select select hbeli from mpersediaan where

namaper like 'Gelang Putih'2. Gunakan informasi hbeli melalui perintah select * from mpersediaan where

hbeli=xx(informasi dari query pertama)

2. Tampilkan data terkait dengan informasi data terkait dengan kasir mana saja yang pernah melakukan transaksi dengan banyaknya transaksi sama dengan kasir bernama ‘cumi’

Asumsi modul ini adalah anda melakukan manipulasi satu data yaitu transaksi ke dua di penjualan untuk di ganti kodekar nya menjadi k-03 sehingga yuda secara jumlah sama dengan cumi. Ini hanya untuk mempermudah contoh saja.

TRIGGERPengertian TriggerTrigger merupakan sekumpulan perintah yang dapat dijalankan otomatis pada sebuah tabel yang berakibat perubahan data pada tabel lainnya. Sebagai contoh adanya proses insert padatabel penjualan yang akan berimbas adanya update pada tabel persediaan. Atau contoh yang lebih jelas, adanya transaksi penjualan buku berjudul SQL sebanyak 10 akan langsung mengurangi data persediaan SQL. Trigger memakai dua tabel maya yaitu inserted dan deleted untuk mendeteksi modifikasi data. Tabel maya inserted digunakan untuk menyimpan data baru atau data hasil modifikasi. Sedangkan tabel maya deleted digunakan untuk menyimpan data yang telah dihapus.

Merancang TriggerCREATE TRIGGER [ schema_name . ]trigger_name ON { table | view } [ WITH <dml_trigger_option> [ ,...n ] ]{ FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] } [ WITH APPEND ] [ NOT FOR REPLICATION ] AS { sql_statement [ ; ] [ ,...n ] | EXTERNAL NAME <method specifier [ ; ] > }

Page 8: Modul III Trigger

Trigger InsertSebagai contoh terdapat dua tabel sederhana yaitu tabel persediaan dan jual. Tabel persediaan berisi data persediaan dan tabel jual berisi data jual dengan asumsi satu penjualan untuk satu persediaan. Pertama kali lakukan create database dengan nama cobatrigger dan buatlah tabel persediaan dengan perintah Create table mper(kodebarang char(2) not null,namabarang varchar(50),jumlah int not null)Create table tjual(nojual char(5) not null,kodebarang char(2) not null,banyak int not null)

Selanjutnya masukan data persediaan pada tabel mper. Langkah berikutnya anda membuat perintah trigger berikut ini.

create trigger ubahjual on tjual for insertasselect kodebarang, banyak from inserted update mper set jumlah=jumlah-banyakfrom inserted where mper.kodebarang=inserted.kodebarang

untuk menguji trigger anda maka lakukan insert data dengan perintah berikut ini. Insert into tjual values (‘12345’,’ab’,5)Selanjutnya cek data anda pada tabel mpersediaan.

TUGAS ANDA ADALAH BUATLAH TRIGGER PADA DATABASE PENJUALAN_KELAS_NIM

Trigger DeleteTrigger insert mirip dengan tabel insert. create trigger deletejual on tjual for deleteasselect kodebarang, banyak from deletedupdate mper set jumlah=jumlah+banyakfrom deleted where mper.kodebarang=deleted.kodebarang

untuk menguji trigger anda maka lakukan delete data dengan perintah berikut ini. delete from tjual where nojual='12345'

Selanjutnya cek data anda pada tabel mpersediaan.

TUGAS ANDA ADALAH BUATLAH TRIGGER PADA DATABASE PENJUALAN_KELAS_NIM