Powered By Blogger

Selasa, 27 September 2011

Trigger


3. Trigger ( contoh, trigger Insert, Delete, Update)
Pada mulanya di buat tabel berikut


Lalu isikan data berikut

Kemudian kita buat tabel penjualan barang (masing-masing item barang berbeda tabel). Contoh dibawah adalah mebuat tabel penjualan Baju :


Biarkan tabel penjualan baju tersebut di atas kosong.

Selanjutnya buat sebuah Trigger, dimana apabila tabel penjualan diisi dengan data penjualan, maka total penjualan baju (kolom : Terjual) akan muncul di tabel barang (kolom : Total_Penjualan).
 
CREATE TRIGGER [TotalPenjualan_Baju]
ON  [dbo].[Table_penjualan]
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @kode int
DECLARE @jual int
SELECT @kode = kode_barang, @jual = sum(terjual) FROM Table_penjualan_baju  Group by Kode_barang
if @jual is not null
UPDATE Table_barang SET Total_penjualan = @jual WHERE kode_barang = @kode
END
Disini kita akan membuat sebuah Trigger dengan nama ‘TotalPenjualan_Baju’ di tabel Table_penjualan. Kita buat 2 buah variabel (@kode dan @jual) dimana @kode adalah nilai kolom kode_barang hasil dari query :

SELECT @kode = kode_barang, @jual = sum(terjual) FROM Table_penjualan Group by Kode_barang

dan variabel @jual, nilainya merupakan penjumlahan (sum) dari kolom ‘terjual’ pada query di atas.
Apabila variabel @jual memiliki nilai (is not null), maka akan dijalankan query berikutnya, yakni :

UPDATE Table_barang SET Total_penjualan = @jual WHERE kode_barang = @kode.

a. Apabila di tabel Table_penjualan diisi data


maka kolom ‘Total_penjualan’ di tabel ‘Table_barang’ pun akan terisi.



b. Apabila di tabel Table_penjualan dilakukan perubahan / update data (misal tadinya data di kolom ‘terjual’ adalah 5, kemudian dirubah menjadi 200)


maka kolom ‘Total_penjualan’ di tabel ‘Table_barang’ pun akan terupdate.



c. Apabila di tabel ‘Table_penjualan dilakukan penambahan / insert data baru, misal



maka kolom ‘Total_penjualan’ di tabel ‘Table_barang’ pun akan terupdate berupa hasil penjumlahan dari data-data tersebut.


Untuk data barang lain (Celana dan Kaos), kita perlu membuat tabel khusus buat masing-masing barang tersebut berikut dengan Trigger-nya.


Selasa, 20 September 2011

Stored Procedure – functions – Trigger


Stored Procedure – functions – Trigger




Stored Procedure 
 
Stored procedure sangat mirip dengan konstruksi terlihat pada bahasa pemrograman lain. Mereka menerima data dalam bentuk parameter input yang ditentukan pada waktu eksekusi. Inputan parameter ini dapat dimanfaatkan dalam pelaksanaan serangkaian pernyataan yang mendapatkan beberapa hasil. Hasil ini dikembalikan ke lingkungan pemanggil melalui penggunaan recordset, parameter output dan kode kembali. Itu mungkin terdengar seperti mulut, tapi Anda akan menemukan bahwa prosedur yang tersimpan adalah sebenarnya cukup sederhana. Dengan kata lain Stored procedure merupakan salah satu fungsi pemrograman prosedural yang tersedia pada SQL Server. Prinsip pembuatan sproc pada dasarnya mirip dengan pembuatan fungsi atau class pada pemrograman berbasis objek (OOP).  
Menerapkan stored procedure pada SQL Server pada dasarnya tidaklah terlalu sulit. Terlebih lagi, dikarenakan fungsi ini telah tersedia semenjak SQL Server 7.0. Berikut adalah sintaks pemrograman dari sebuah stored procedure:


1: CREATE PROCEDURE|PROC <sproc name>
2: [<parameter name> [schema.]<data type> [VARYING] [= <default value>] [OUT
3: [PUT]][,
4: <parameter name> [schema.]<data type> [VARYING] [= <default value>]
5: [OUT[PUT]][,
6: ...
7: ...
8: ]]
9: [WITH
10: RECOMPILE| ENCRYPTION | [EXECUTE AS { CALLER|SELF|OWNER|<’user name’>}]
11: [FOR REPLICATION]
12: AS
13: <code> | EXTERNAL NAME <assembly name>.<assembly class>

Untuk mengakses stored procedure yang telah dibuat, maka dapat menggunakan perintah seperti ini:

1: EXEC <sproc name>

Function
Function adalah suatu blok PL/SQL yang memiliki konsep sama dengan procedure, hanya saja pada function terdapat pengembalian nilai (return value).
Karena function dapat mengembalikan sebuah nilai, function dapat diakses seperti layaknya sebuah variabel biasa.



Ada berbagai macam fungsi yang ada pada SQL :

      1.      Fungsi Agregasi/Agregates
--> Fungsi yang dihasilkan dari sebuah group data.
a.      SUM
--> Untuk menjumlah suatu kolom tertentu yang telah definisikan dalam perintah select.
Sintak :
SELECT SUM (nama_kolom) FROM nama_tabel
[WHERE = Kondisi]

Contoh :
SELECT SUM (SKS) FROM Mata_Kuliah
b.      COUNT
--> Untuk menghitung jumlah baris dalam sebuah tabel.
Sintak :
SELECT COUNT nama_kolom FROM nama_tabel
[WHERE]
Contoh :
SELECT COUNT (*) FROM mahasiswa
SELECT COUNT (SKS) FROM Mata_Kuliah
c.      AVG
--> Untuk menghitung nilai rata – rata dari suatu kolom tertentu yang telah definisikan dalam perintah select.
Sintak :
SELECT AVG nama_kolom FROM nama_tabel
[WHERE]

Contoh :
SELECT AVG (SKS) FROM Mata_Kuliah
d.     MIN
    --> Untuk mengetahui nilai terkecil dari sebuah kolom tertentudalam perintah select.
Sintak :
SELECT MIN nama_kolom FROM nama_tabel
[WHERE]
Contoh :
SELECT MIN (SKS) FROM Mata_Kuliah
e.      MAX
--> Untuk mengetahui nilai terbesar dari sebuah kolom tertentu dalam perintah select.
Sintak :
SELECT MAX nama_kolom FROM nama_tabel
[WHERE]
Contoh :
SELECT MAX (SKS) FROM Mata_Kuliah

      2.      Fungsi Waktu

a.      GETDATE
--> Untuk menampilkan tanggal sekarang.
Contoh :
SELECT GETDATE()
b.      DATEADD
--> Untuk memambah jumlah hari, tanggal atau tahun yang ditentukan.
Sintak :
DATEADD (datepart, jumlah, tanggal)
Contoh :
SELECT DATEADD (day, 10, getdate())
SELECT DATEADD (Month, 10, getdate())
SELECT DATEADD (Year, 10, getdate())
c.      DATEDIFF
--> Untuk mengetahui rentan waktu (bisa hari, bulan, tahun).
Sintak :
DATEDIFF (datepart,tanggal_awal, tanggal_akhir)
Contoh :
SELECT DATEDIFF (month, '01/01/2007','01/01/2008')
d.     DATENAME
--> Untuk menampilkan nama hari, bulan atau tahun.
Sintak :
DATENAME (datepart, tanggal)
Contoh :
SELECT DATENAME (month, getdate()) AS 'BulanSekarang'

      3.      Fungsi Aritmatika

a.      SQRT
--> Untuk mencari akar dari niai tertentu.
Contoh :
SELECT SQRT (100)
b.      CEILING
--> Untuk pembulatan ke atas dari angka decimal
Contoh :
SELECT CEILING (25.25)
Keterangan : Akan menghasilkan nilai 26
c.      FLOOR
--> Untuk pembulatan ke bawah dari angka decimal
Contoh :
SELECT FLOOR (25.25)
Keterangan : Akan menghasilkan nilai 25

      4.      Fungsi Karakter

a.      LOWER dan UPPER
--> LOWER _ mengubah huruf besar ke huruf kecil
--> UPPER _ mengubah huruf kecil ke huruf besar
Contoh :
SELECT LOWER (Nama) FROM Mahasiswa
SELECT UPPER (Nama) FROM Mahasiswa
b.      LEN
--> Untuk menghitung jumlah karakter.
Contoh :
SELECT Nama, LEN (Nama) FROM Mahasiswa
c.      LTRIM dan RTRIM
--> LTRIM _ memotong karakter spasi di kiri string
--> RTRIM _ memotong karakter spasi di kanan string
Contoh :
SELECT LTRIM (' Sistem Basis Data')
SELECT RTRIM ('Sistem Basis Data ')
Keterangan :
Akan menghasilkan “Sistem Basis Data”
d.     SUBSTRING
--> Mengambil beberapa karakter dari sebuah deretan string.
Contoh :
SELECT SUBSTRING ('Sistem Basis Data',8,5)
Keterangan :
Mengambil string dari karakter ke 8 sebanyak 5 karakter.
Hasilnya adalah ‘Basis’
e.      LEFT dan RIGHT
--> LEFT _ Mengambil beberapa karakter dari kiri
--> RIGHT _ Mengambil beberapa karakter dari kakan
Contoh :
SELECT LEFT ('Sistem Basis Data',6)
Keterangan :
Mengambil string sebanyak 6 karakter dari sebelah kiri.
Hasilnya adalah ‘Sistem’


Trigger

Trigger adalah suatu objek dalam basisdata yang terdapat pada bagian tabel. Trigger untuk menempatkan suatu prosedure berkaitan dengan perubahan pada isi tabel. Cara kerja trigger adalah merespon berkaitan dengan perintah DML (INSERT , UPDATE, DELETE) pada tabel.
Adapun jenis perubahan yang dijalankan dalam trigger adalah :
  1. BEFORE INSERT on TABEL1 : menjalankan proses di dalamnya pada saat sebelum melakukan operasi INSERT di TABEL1
  2. AFTER INSERT on TABEL menjalankan proses di dalamnya pada saat sesudah melakukan operasi INSERT di TABEL1
  3. BEFORE UPDATE on TABEL1 menjalankan proses di dalamnya pada saat sebelum melakukan operasi UPDATE di TABEL1
  4. AFTER UPDATE on TABEL1 menjalankan proses di dalamnya pada saat sesudah melakukan operasi UPDATE di TABEL1
  5. BEFORE DELETE on TABEL1 : menjalankan proses di dalamnya pada saat sebelum melakukan operasi DELETE di TABEL1
  6. AFTER DELETE on TABEL1 : menjalankan proses di dalamnya pada saat sesudah melakukan operasi DELETE di TABEL1