Pages

Jumat, 01 Juli 2011

Trigger, View, Store Procedure

Trigger

Dalam bahasa trigger itu artinya adalah pemicu, namun jika dihubungkan ke database, trigger artinya kode SQL yang dikerjakan oleh DBMS ketika suatu kejadian terjadi.n dalam hal ini jika perintah INSERT, UPDATE, atau DELETE dijalankan di DBMS. 

OK, saya kasih contoh sederhanan saja ya.. misalnya saya punya 2 tabel..tabel barang dan tabel pembelian, untuk lebih jelasnya bisa dilihat pada gambar dibawah ini. dalam tabel barang tersebut ada nama barang dan jumlah stock , IDEnya adalah ketika tabel pembelian ditambahkan, jumlah stock barang akan terupdate secara otomatis.misalnya ketika barang A dibeli sejumlah 3 buah maka nanti stock barang akan bertambah 3 secara otomatis. proses tersebut bisa dilakukan dgn trigger


menurut MSDN, syntac dari trigger adalah sebagai berikut
Syntax

CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] [ , ] [ DELETE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
[ { IF UPDATE ( column )
[ { AND | OR } UPDATE ( column ) ]
[ ...n ]
| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
{ comparison_operator } column_bitmask [ ...n ]
} ]
sql_statement [ ...n ]
}
}

biar lebih mengerti, kita mulai dengan contoh.. jadi kita butuh membuat 2 tabel tersebut di SQL server 2005, script sebagai berikut

create table BARANG
(
BAR_ID int not null,
BAR_NAMA varchar(255) not null,
BAR_STOCK int null
default 0,
constraint PK_BARANG primary key (BAR_ID)
)
go

create table PEMBELIAN
(
PEM_ID int not null,
BAR_ID int null ,
PEM_JUMLAH int null ,
constraint PK_PEMBELIAN primary key (PEM_ID)
)
go

create index RELATION_FK on PEMBELIAN (BAR_ID)
go

alter table PEMBELIAN
add constraint FK_PEMBELIA_RELATION_BARANG foreign key (BAR_ID)
references BARANG (BAR_ID)
go

INSERT INTO BARANG (BAR_ID,BAR_NAMA) VALUES (1,’AQUA’);
INSERT INTO BARANG (BAR_ID,BAR_NAMA) VALUES (2,’TOTAL’);
INSERT INTO BARANG (BAR_ID,BAR_NAMA) VALUES (3,’AQUADES’);

setelah anda menjalankan script tersebut, maka anda akan mempunyai 2 tabel, yaitu tabel barang dengan isi 3 buah data, dan tabel pembelian dengan data masih kosong.3 data di tabel barang tersebut secara defaut stocknya adalah 0

kemudian saatnya kita buat trigger sehingga ketika kita menambahkan data di tabel pembelian dengan jumlah pembelian barang tertentu, maka stock di tabel barang akan bertambah sesuai dengan barang yg dibeli, syntac trigger tersebut adalah sebagai berikut

create trigger tambahStockbarang on pembelian
for insert
as
update b set b.bar_stock = b.bar_stock + i.pem_jumlah
from barang b join inserted i on b.bar_id = i.bar_id

arti dari kode tersebut adalah sebagai berikut
create trigger tambahStockbarang on pembelian
membuat trigger dengan nama tambahStockBarang dimana trigger tersebut akan terpicu jika ada perubahan di tabel pembelian

for insert
as
perubahan tersebut adalah penambahan(insert) di tabel pembelian , selain penambahan bisa juga diisi dengan perubahan(update) atau penghapusan(delete)
for disini juga bisa rubah isinya jadi after atau instead of . perbedaanya adalah waktu trigger dikerjakan, biasaya yg sering digunakan adalah for

update b set b.bar_stock = b.bar_stock + i.pem_jumlah
from barang b join inserted i on b.bar_id = i.bar_id
ini adalah kode yg dikerjakan ketika kejadian trigger terpicu, kode diatas bertujuan merubah nilai bar_stock pada tabel barang dengan menambahkan nilai bar_stock yg sekarang dengan jumlah barang yg dibeli (pem_jumlah). perhatikan disini ada tabel yang bernama inserted, tabel tersebut merupakan tabel logika yg digunakan untuk menyimpan data yang memicu terjadinya trigger, dalam hal ini nilai data yg dimasukkan(insert) kedalam tabel pembelian, selain inserted, tabel logika lainnya adalah deleted, tabel logika ini digunakan untuk trigger yg terpicu dengan kejadian delete

kita coba masukkan kode berikut

INSERT INTO PEMBELIAN (PEM_ID, BAR_ID, PEM_JUMLAH) VALUES (1,1,4);
INSERT INTO PEMBELIAN (PEM_ID, BAR_ID, PEM_JUMLAH) VALUES (2,3,2);
INSERT INTO PEMBELIAN (PEM_ID, BAR_ID, PEM_JUMLAH) VALUES (3,1,1);

arti kode tersebut
pem_id haruslah beda karena merupakan primary key
beli aqua(kode bar_id=1) sebanyak 4
beli aquades (kode bar_id=3) sebanyak 2
beli aqua lagi sebanyak 1

sehingga secara keseluruhan yg dibeli aqua sebanyak 5 dan aquades sebanyak 2
karena default nilai stock barang adalah 0, maka seharusnya nilai aqua 5 dan aquades 2 adalah jumlah stock barang sekarang ini

dan kita lihat data barang…
sekian tutorial kali ini tentang membuat trigger di SQL Server, semoga bisa membantu yg lagi kesusahan bikin Tugas Akhir dan tugas lainnya...!!!

View


View adalah salah satu object database, yang secara logika merepresentasikan sub himpunan dari data yang berasal dari satu atau lebih table.

Kegunaan dari view adalah :

  • Membatasi akses database
  • Membuat query kompleks secara mudah
  • Mengijinkan independensi data
  • Untuk menampilkan view (pandangan) data yang berbeda dari data yang sama.
Bentuk Umum Perintah View dalam Oracle

View dapat dibuat dengan perintah CREATE VIEW. Subquery dapat dicantumkan dalam
CREATE VIEW, tapi subquery yang digunakan tidak boleh berisi klausa ORDER BY.
Sintak penulisan VIEW :

Perintah pembuatan table view  :


 SQL> CREATE VIEW myview
      AS SELECT empno EMPLOYEE_NO, NAMA nama, GAJI sal, pekerjaan JOB
         FROM emp
            WHERE deptno=20;
Store Procedure

Cara Membuat Store Procedure di SQL Server

Membuat STORE PROCEDURE di SQL sangat penting untuk dikuasai terutama bagi ingin mendalami bahasa pemrograman aplikasi yang berkaitan dengan DATABASE (entah itu Delphi, VBasic, VFoxro, bahkan Web Base). Karena didalam STORE PROCEDURE ini kita akan melakukan perhitungan-perhitungan data yang hasilnya berupa dataset langsung dapat kita ambil melalui program aplikasi yang kita bikin.Mungkin Anda pernah mendengar dengan program Client Server. Maksud dari program Client Server adalah kita membuat suatu program yang diletakkan diserver berupa bahasa SQL dimana didalam program tersebut biasanya ditugaskan untuk melakukan perhitungan-perhitungan data dimana hasil akhirnya dapat kita ambil dan ditampilkan lewat program-program aplikasi (seperti Delphi, Visual Basic, Visual Foxpro, dll) yang berhubungan langsung dengan end user. Jadi STORE PROCEDURE tersebut letaknya di Sever, sedangkan program aplikasi yang berhubungan langsung dengan end user letaknya di komputer Client. Untuk itulah diistilahkan dengan program Client Server. Penguasaan SQL wajib hukumnya bagi yang ingin mengembangkan suatu program dengan berbasis DATABASE. Kalau tidak kita akan mendapat suatu kesulitan yang sangat luar biasa dalam mengembangkan suatu program aplikasi. Apalagi bahasa SQL ini sangat welcome sekali terhadap berbagai macam jenis bahasa. Semuanya rata-rata mengenali bahasa ini. Kita kembali ke awal, dengan menggunakan STORE PROCEDURE traffic (lalu lintas) data dijaringan dapat dikurangi, karena perhitungan-perhitungan sudah dilakukan diserver dan program di Client tinggal mengambil hasil akhirnya saja yang akan ditampilkan kepada end user.
Disini saya akan membuat contoh membuat STORE PROCEDURE dengan memakai SQL Server dengan menggunakan fasilitas Query Analyzer.

Untuk memudahkan, saya akan berikan contoh kasus sederhana dibawah ini :

Kita mempunyai dua tabel, yang pertama tb_masuk dimana tabel ini berisi quantity barang masuk. Dan yang kedua tabel tb_keluar yang berisi data quantity barang keluar. Sekarang hitung jumlah quantity dengan rumus qty_akhir = qtymasuk-qtykeluar.



Pertama kali buka Query Analyzer, dan diharapkan Anda sudah bisa membuat CREATE DATABASE dan CREATE TABLE dengan isinya seperti tabel diatas.

Kemudian pertama-tama bikin perintah seperti dibawah ini

CREATE PROC sp_hitungStok AS

Perintah tersebut di running terlebih dahulu.

Kemudian diedit melalui langkah-langkah berikut :

Klik Object Browser (F8).
muncul gambar seperti diatas, pilih database yang digunakan dan di expand, kemudian pilih folder Store Procedure, disini merupakan daftar dari Store Procedure termasuk Store Procedure yang kita bikin diatas. Cari nama Store Procedure yang telah kita bikin yaitu sp_hitungStok. Kemudian klik kanan dan edit…..



setelah ALTER PROC sp_hitungStok AS sisipkan perintah ini :


“create table #tb_hasil(kode char(4), qty float)” merupakan tabel temporary, setelah procedure selesai dijalankan table ini otomatis terhapus.


Setelah perintah disisipkan silakan di running terlebih dahulu procedure ini dengan menekan tombol Ctrl+E.
Setelah itu ditutup tidak apa-apa, atau masuk dalam window lain dengan menekan tombol Ctrl+W, pilih window sebelumnya atau untitled1.
Berikan perintah untuk memanggil procedure yang dibikin tadi dengan perintah berikut :

exec sp_hitungStok
kemudian perintah ini diblok, dan di running dengan Ctrl+E.Untuk lebih jelas hasilnya dalam bentuk grid Anda harus men-setting menu Query-Result in Grid
Anda akan melihat hasilnya :
Tabel hasil tersebut merupakan penjumlahan dari tabel tb_masuk dan tb_keluar.
Store Procedure dengan Parameter
Dengan contoh yang sama kita akan membuat suatu store procedure dengan parameter.
Seperti contoh diatas kita harus melakukan pengeditan dengan mengklik kanan Store Procedure yang kita bikin dan berikan perintah berikut :

Lengkapnya sbb :

Kemudian di running, terus untuk memanggilnya :
exec sp_hitungStok isi_paramater
contoh : exec sp_hitung ’1001′
silakan jalankan, kita akan mendapatkan hasil berikut :
Yang akan tampil hanya kode ’1001′

Tidak ada komentar:

Posting Komentar

KOMENTAR ANDA

Total Tayangan Halaman

Basis Data

Basis Data
Terimakasih