Our social:

Latest Post

Tampilkan postingan dengan label Database. Tampilkan semua postingan
Tampilkan postingan dengan label Database. Tampilkan semua postingan

Kamis, 21 September 2017

Trigger

kurang lebih 9 bulan tidak aktif di blogger lagi kali ini saya coba posting dari pengalaman saya hari ini untuk penyelesaikan kasus di aplikasi saya mengenai php mysql, dimana perlu melakukan update terhadap suatu field dari table, berdasarkan isi field dari table lain, dan di aplikasi ini saya menggunakan trigger dari mysql, apakah itu trigger ?

trigger
Trigger adalah sebuah objek database yang di asosiasikan dengan sebuah tabel dan akan aktif (terpicu/trigger) ketika sebuah event terjadi pada tabel tersebut Trigger hanya terjadi ketika ada eksekusi INSERT, DELETE, dan UPDATE pada tabel yang bersangkutan Waktu eksekusi trigger yang mungkin terjadi terdiri dari 2 yaitu BEFORE dan AFTER dari statement SQLnya. Implementasi trigger yang sering ditemui dalam dunia nyata adalah untuk mengeset dan mengubah nilai kolom dalam suatu tabel sehingga validasi nilai dari tabel tersebut akan terjaga. Adanya trigger dalam database akan meringankan kita dalam pembuatan aplikasi karena di dalam aplikasi yang kita buat kita tidak perlu lagi untuk melakukan validasi data


Jenis Trigger
Ada 2 jenis trigger yaitu :
·         Application trigger: Terjadi pada saat sebuah kejadian

terjadi dengan aplikasi tertentu.

·         Database trigger : Terjadi pada saat terjadi sebuah

perubahan data seperti DML pada table (INSERT,

UPDATE atau DELETE)

caranya
script dasar dari trigger 


CREATE TRIGGER nama_trigger after kejadian(i/u/d) ON nama_tabel
 FOR EACH ROW BEGIN
 INSERT INTO nama_tabel SET
 nama_field = kejadian(new/old).nama_field
 , nama_field=kejadian(new/old).nama_field
 ON DUPLICATE KEY UPDATE nama_field=nama_field+kejadian(new/old).nama_field;
 END$$  

untuk memulainya, pertama kita harus membuat tabelnya
Table kesatu : beli
CREATE TABLE beli(
id_beli INT( 11 ) NOT NULL AUTO_INCREMENT ,
kd_barang VARCHAR( 5 ) DEFAULT NULL ,
nama_barang VARCHAR( 20 ) DEFAULT NULL ,
jumlah INT( 11 ) DEFAULT NULL ,
PRIMARY KEY ( id_beli )
) ENGINE = MYISAM DEFAULT CHARSET = utf8; 
 Table kedua : jual

CREATE TABLE jual(
id_jual INT( 11 ) NOT NULL AUTO_INCREMENT ,
kd_pelanggan VARCHAR( 10 ) NOT NULL ,
kd_barang VARCHAR( 5 ) DEFAULT NULL ,
nama_barang VARCHAR( 20 ) DEFAULT NULL ,
jumlah INT( 11 ) DEFAULT NULL ,
PRIMARY KEY ( id_jual )
) ENGINE = MYISAM DEFAULT CHARSET = utf8;

 Table ketiga : stok

CREATE  TABLE stok
(kd_barang varchar(5) NOT  NULL
, jumlah int(11) NOT NULL
, PRIMARY KEY (kd_barang)
) ENGINE = MYISAM  DEFAULT CHARSET = utf8;


Sekarang kita sudah mempunyai 3 table yang akan dieksekusi, alurnya seperti ini : Jika ada pembelian (kita membeli barang ke distributor) maka akan menambah stok barang. Jika ada penjualan (ada yang membeli barang kita) maka akan mengurangi stok barang. Bagaimana? Sudah mengerti alurnya? Jika sudah kita langsung buat triggernya.

*Note : Jangan lupa perhatikan tanda $$ (delimeter)nya. Jika lupa akan error. Delimeter akan membatasi akhir dari sebuah trigger.


 1. Membuat Trigger beli_barang

 
CREATE TRIGGER beli_barang after INSERT ON beli
 FOR EACH ROW BEGIN
 INSERT INTO stok SET
 kd_barang = NEW.kd_barang, jumlah=New.jumlah
 ON DUPLICATE KEY UPDATE jumlah=jumlah+New.jumlah;
 END$$  


Keterangan : Trigger diberi nama beli_barang, dan trigger akan bekerja setelah memasukkan data kedalam table beli. Dan secara otomatis akan menambahkan stok barang kedalam table stok. Karena data pada table beli masih nol, jika kita memasukkan data ke table beli, maka tidak akan ada penjumlahan yang terjadi.

Sekarang cobalah masukkan sebuah data ke dalam table beli.


Klik Go, lalu buka table stok. Jika berhasil, barang yang sudah dimasukkan di table beli akan masuk ke dalam table stok yatu kd_barang dan jumlahnya.







Sekarang, cobalah untuk memasukkan barang lagi ke table beli. Dengan kd_barang dan nama_barang yang sama. Tetapi bedakan jumlahnya, saya contohkan jumlahnya 23. Klik go dan coba lihat table stok





 Bertambah bukan? Sekarang sudah lebih mengerti konsep dari trigger kan? Jika sudah, kita buat trigger yang selanjutnya.

 2. Membuat trigger jual_barang

CREATE TRIGGER jual_barang after INSERT ON jual
 FOR EACH ROW BEGIN
 UPDATE stok
 SET jumlah = jumlah - NEW.jumlah
 WHERE
 kd_barang = NEW.kd_barang;
 END$$  

Keterangan : Trigger diberi nama jual_barang, dan trigger akan bekerja setelah memasukkan data kedalam table jual. Dan secara otomatis akan mengurangi stok barang dalam table stok.
Sekarang cobalah untuk memasukkan sebuah data ke dalam table jual. Kita akan mencoba memasukkan data yang telah ada di table beli (tersedia dalam stok).











 Klik Go, setalah itu buka table stok.






Jumlah stok yang awalnya 53 telah berkurang karena barang telah dibeli oleh pelanggan sebanyak 10.
Nah, itulah trigger. Sangat memudahkan bukan untuk memanipulasi data bukan? Semoga bermanfaat ya dan teruslah belajar :)

 sumber :
definisi trigger : http://memahamibdl.blogspot.co.id/2014/07/pengertian-trigger-dan-implementasinya.html
cara : https://www.dumetschool.com/blog/Cara-Membuat-Trigger-dI-MySQL

Rabu, 25 Juni 2014

Subquery Syntax

Dimulai dengan MySQL 4.1, semua bentuk subquery dan operasi yang standar SQL membutuhkan didukung, serta beberapa fitur yang MySQL-spesifik.
Berikut adalah contoh dari subquery:
 SELECT * FROM t1 MANA column1 = (SELECT column1 FROM t2);
Dalam contoh ini, SELECT * FROM t1 ... adalah permintaan luar (atau pernyataan luar), dan (SELECT column1 FROM t2) adalah subquery. Kita mengatakan bahwa subquery bersarang dalam permintaan luar, dan pada kenyataannya adalah mungkin untuk subqueries sarang dalam subqueries lain, dengan kedalaman yang cukup. Sebuah subquery harus selalu muncul dalam tanda kurung.
Keuntungan utama dari subqueries adalah:
  • Mereka memungkinkan query yang terstruktur sehingga dimungkinkan untuk mengisolasi setiap bagian dari sebuah pernyataan.
  • Mereka menyediakan cara alternatif untuk melakukan operasi yang tidak akan membutuhkan kompleks bergabung dan serikat pekerja.
  • Banyak orang menemukan subqueries lebih mudah dibaca daripada kompleks bergabung atau serikat pekerja. Memang, itu adalah inovasi subqueries yang memberi orang gagasan asli memanggil SQL awal "Structured Query Language."
Berikut ini adalah pernyataan contoh yang menunjukkan poin utama tentang sintaks subquery seperti yang ditetapkan oleh standar SQL dan didukung di MySQL:
 
DELETE FROM t1
WHERE s11 > ANY
 (SELECT COUNT(*) /* no hint */ FROM t2
  WHERE NOT EXISTS
   (SELECT * FROM t3
    WHERE ROW(5*t2.s1,77)=
     (SELECT 50,11*s1 FROM t4 UNION SELECT 50,77 FROM
      (SELECT * FROM t5) AS t5)));
 
Sebuah subquery dapat kembali skalar (nilai tunggal), satu baris, satu kolom, atau meja (satu atau lebih baris dari satu atau lebih kolom). Ini disebut subqueries skalar, kolom, baris, dan meja. Subqueries yang kembali jenis tertentu hasil sering dapat digunakan hanya dalam konteks tertentu, seperti yang dijelaskan dalam bagian berikut.
Ada beberapa pembatasan pada jenis laporan yang subqueries dapat digunakan. Sebuah subquery dapat berisi banyak kata kunci atau klausul bahwa biasa SELECT dapat berisi: DISTINCT , GROUP BY , ORDER BY , LIMIT , bergabung, petunjuk indeks, UNION konstruksi, komentar, fungsi, dan sebagainya.
Pernyataan luar A subquery bisa menjadi salah satu dari: SELECT , INSERT , UPDATE , DELETE , SET , atau DO .
Di MySQL, Anda tidak dapat mengubah meja dan pilih dari tabel yang sama dalam suatu subquery. Hal ini berlaku untuk pernyataan seperti DELETE , INSERT , REPLACE , UPDATE , dan (karena subqueries dapat digunakan dalam SET klausul) LOAD DATA INFILE .
Untuk informasi tentang bagaimana optimizer menangani subqueries, lihat Bagian 8.3.1.14, "Mengoptimalkan Subqueries dengan EXISTS Strategy " . Untuk diskusi tentang pembatasan penggunaan subquery, termasuk masalah kinerja untuk bentuk-bentuk tertentu dari sintaks subquery, lihat Bagian D.3, "Pembatasan Subqueries" .

sumber 

T-SQL : Cara Lain Untuk INNER JOIN Table Tanpa Menggunakan Kata INNER JOIN

Hi,,, saya akan memberitahu suatu cara unik untuk melakukan INNER JOIN Table tanpa harus menggunakan kata kata INNER JOIN, penasaran ? atau ada yang sudah tahu caranya ? ok sebelumnya saya sudah kupas tuntas tentang INNER JOIN DISINI. Cara lain yang saya maksud adalah :
SELECT A.KODE_BARANG, A.NAMA_BARANG, A.KODE_GROUP, B.NAMA_GROUP, A.KODE_SUPPLIER, C.NAMA_SUPPLIER
FROM BARANG AS A,GROUP_BARANG AS B, SUPPLIER_BARANG AS C
WHERE A.KODE_GROUP = B.KODE_GROUP AND A.KODE_SUPPLIER=C.KODE_SUPPLIER

Jadi intinya, INNER JOIN cukup diganti dengan koma dan ON nya diganti dengan WHERE. Secara teori adalah seperti ini :
SELECT A.*, B.*, C.*, D.* FROM
TABLE1 AS A, TABLE2 AS B, TABLE3 AS C, TABLE4 AS D
WHERE A.KODE=B.KODE AND A.KODE2=C.KODE2 AND A.KODE3=D.KODE3
Ini sama dengan :
SELECT A.*, B.*, C.*, D.* FROM
TABLE1 AS A INNER JOIN TABLE2 AS B ON A.KODE=B.KODE
INNER JOIN TABLE3 AS C ON A.KODE2=C.KODE2
INNER JOIN TABLE4 AS D ON A.KODE3=D.KODE3

Ini hanya berlaku pada INNER JOIN dan CROSS JOIN saja, tidak bisa untuk RIGHT / LEFT JOIN, Selamat mencoba !

sumber

Sabtu, 30 Juli 2011

Pengertian VIEW pada Database Management System (DBMS)

Salah satu keuntungan dari model relasional adalah model tersebut memberikan independensi data sepenuhnya secara logikal. Skemaexternal akan mengijinkan user untuk memiliki view ter tentu dari database.
Dalam sistem relasional, sebuah view adalah sebuah relasi virtual.
Definisi view adalah hasil (result) dari sebuah Query terhadap relasi- relasi dasar (atau relasi real). Hasil (view) ini tidak disimpan dalam database seperti relasi dasar. Sebuah view adalah sebuah jendela dinamik, dalam artian bahwa ia mencerminkan semua update yang dilakukan terhadap database. Disamping pemakaiannya di dalam skemaexternal, view juga berguna untuk menjamin data- security dengan cara yang sederhana. Dengan memilih subset dari database, view dapat menyembunyikan beberapa data.
Jika user mengakses database melalui view, mereka tak dapat melihat atau memanipulasi hidden-data, dengan demikian data akan menjadisecure.
Perhatikan bahwa, dalam sistem DBMS terdistribusi, sebuah view dapat diturunkan dari relasi- relasi terdistribusi. Akses ke sebuah view akan memer lukan eksekusi dari kueri terdistribusi yang berhubungan dengan definisi view ter sebut.
Isu penting dalam DBMS terdistribusi adalah untuk membuat materialisasi view dengan cara yang efisien. Kita akan melihat bagaimana konsep snapshot akan membantu dalam memecahkan masalah ini, tapi ter lebih dulu kita akan berkonsentrasi pada DBMS terpusat.
Konteks view dalam DBMS terpusat, sebuah view adalah sebuah relasi yang diturunkan dari relasi relasi dasar , sebagai hasil dari sebuah kueri relasional.

Contoh penggunaan view dalam SQL :


set pagesize 500
alter session set nls_date_format = 'DD.MM.YYYY';

create table prices_ (
sku varchar2(38),
price number,
valid_from date
);

insert into prices_ values ('4711', 18, '08.01.2003');
insert into prices_ values ('4711', 19, '01.05.2000');
insert into prices_ values ('4711', 20, '18.01.2001');
insert into prices_ values ('4711', 21, '09.01.2000');

insert into prices_ values ('beer', 14, '07.03.2000');
insert into prices_ values ('beer', 15, '10.01.2003');
insert into prices_ values ('beer', 16, '18.01.2001');
insert into prices_ values ('beer', 19, '16.11.2001');
insert into prices_ values ('beer', 17, '19.02.2002');


create view prices_today_ as
select
sku,
price,
valid_from
from
(select
sku,
price,
valid_from,
rank() over (partition by sku order by valid_from desc) r
from
prices_
)
where r=1;


select * from prices_today_;

drop table prices_;
drop view prices_today_;

Pengertian Trigger pada SQL

Trigger adalah blok PL/SQL atau prosedur yang berhubungan dengan table, view, skema atau database yang dijalankan secara implicit pada saat terjadi sebuah event. Trigger merupakan store procedure yang dijalankan secara automatis saat user melakukan modifikasi data pada tabel. Modifikasi data yang dilakukan pada tabel yaitu berupa perintah INSERT, UPDATE, dan DELETE. INSERT , UPDATE dan DELETE bisa digabung jadi satu trigger yang dinamakan Multiple Trigger.

Tipe dari trigger adalah :

· Application trigger : diaktifkan pada saat terjadi event yang berhubungan dengan sebuah aplikasi

· Database trigger : diaktifkan pada saat terjadi event yang berhubungan dengan data (seperti operasi DML) atau event yang berhubungan dengan sistem (semisal logon atau shutdown) yang terjadi pada sebuah skema atau database.

Trigger perlu dibuat pada saat :

· Membentuk sebuah aksi tertentu terhadap suatu event
· Memusatkan operasi global

Trigger tidak perlu dibuat, jika :

· Fungsionalitas yang diperlukan suatu ada pada Oracle server
· Duplikat atau sama dengan fungsi trigger yang lain.

Sintak penulisan dari database trigger, berisi komponen berikut :

1. Trigger timing :
a. Untuk tabel : BEFORE, AFTER
b. Untuk view : INSTEAD OF
2. Trigger event : INSERT, UPDATE atau DELETE
3. Nama tabel : yaitu nama tabel atau view yang berhubungan dengan trigger
4. Tipe trigger : Baris atau Pernyataan (statement)
5. klausa WHEN : untuk kondisi pembatasan
6. trigger body : bagian prosedur yang dituliskan pada trigger

Trigger timing adalah waktu kapan trigger diaktifkan. Ada tiga macam trigger timing, yaitu :

· BEFORE : trigger dijalankan sebelum DML event pada tabel
· AFTER : trigger dijalankan setelah DML event pada tabel
· INSTEAD OF : trigger dijalankan pada sebuah view.

Trigger event ada 3 kemungkinan : INSERT, UPDATE atau DELETE.
Pada saat trigger event UPDATE, kita dapat memasukkan daftar kolom untuk mengidentifikasi kolom mana yang berubah untuk mengaktifkan sebuah trigger (contoh : UPDATE OF salary ... ). Jika tidak ditentukan, maka perubahannya akan berlaku untuk semua kolom pada semua baris.

Tipe trigger ada 2 macam, yaitu :

· Statement : trigger dijalankan sekali saja pada saat terjadi sebuah event. Statement trigger juga dijalankan sekali, meskipun tidak ada satupun baris yang dipengaruhi oleh event yang terjadi.

· Row : trigger dijalankan pada setiap baris yang dipengaruhi oleh terjadinya sebuah event. Row trigger tidak dijalankan jika event dari trigger tidak berpengaruh pada satu baris pun.

Trigger body mendefinisikan tindakan yang perlu dikerjakan pada saat terjadinya event yang mengakibatkan sebuah trigger menjadi aktif.


sumber

Pengertian Trigger pada SQL

Trigger adalah blok PL/SQL atau prosedur yang berhubungan dengan table, view, skema atau database yang dijalankan secara implicit pada saat terjadi sebuah event. Trigger merupakan store procedure yang dijalankan secara automatis saat user melakukan modifikasi data pada tabel. Modifikasi data yang dilakukan pada tabel yaitu berupa perintah INSERT, UPDATE, dan DELETE. INSERT , UPDATE dan DELETE bisa digabung jadi satu trigger yang dinamakan Multiple Trigger.

Tipe dari trigger adalah :

· Application trigger : diaktifkan pada saat terjadi event yang berhubungan dengan sebuah aplikasi

· Database trigger : diaktifkan pada saat terjadi event yang berhubungan dengan data (seperti operasi DML) atau event yang berhubungan dengan sistem (semisal logon atau shutdown) yang terjadi pada sebuah skema atau database.

Trigger perlu dibuat pada saat :

· Membentuk sebuah aksi tertentu terhadap suatu event
· Memusatkan operasi global

Trigger tidak perlu dibuat, jika :

· Fungsionalitas yang diperlukan suatu ada pada Oracle server
· Duplikat atau sama dengan fungsi trigger yang lain.

Sintak penulisan dari database trigger, berisi komponen berikut :

1. Trigger timing :
a. Untuk tabel : BEFORE, AFTER
b. Untuk view : INSTEAD OF
2. Trigger event : INSERT, UPDATE atau DELETE
3. Nama tabel : yaitu nama tabel atau view yang berhubungan dengan trigger
4. Tipe trigger : Baris atau Pernyataan (statement)
5. klausa WHEN : untuk kondisi pembatasan
6. trigger body : bagian prosedur yang dituliskan pada trigger

Trigger timing adalah waktu kapan trigger diaktifkan. Ada tiga macam trigger timing, yaitu :

· BEFORE : trigger dijalankan sebelum DML event pada tabel
· AFTER : trigger dijalankan setelah DML event pada tabel
· INSTEAD OF : trigger dijalankan pada sebuah view.

Trigger event ada 3 kemungkinan : INSERT, UPDATE atau DELETE.
Pada saat trigger event UPDATE, kita dapat memasukkan daftar kolom untuk mengidentifikasi kolom mana yang berubah untuk mengaktifkan sebuah trigger (contoh : UPDATE OF salary ... ). Jika tidak ditentukan, maka perubahannya akan berlaku untuk semua kolom pada semua baris.

Tipe trigger ada 2 macam, yaitu :

· Statement : trigger dijalankan sekali saja pada saat terjadi sebuah event. Statement trigger juga dijalankan sekali, meskipun tidak ada satupun baris yang dipengaruhi oleh event yang terjadi.

· Row : trigger dijalankan pada setiap baris yang dipengaruhi oleh terjadinya sebuah event. Row trigger tidak dijalankan jika event dari trigger tidak berpengaruh pada satu baris pun.

Trigger body mendefinisikan tindakan yang perlu dikerjakan pada saat terjadinya event yang mengakibatkan sebuah trigger menjadi aktif.


sumber

Pengertian VIEW pada Database Management System (DBMS)

Salah satu keuntungan dari model relasional adalah model tersebut memberikan independensi data sepenuhnya secara logikal. Skemaexternal akan mengijinkan user untuk memiliki view ter tentu dari database.
Dalam sistem relasional, sebuah view adalah sebuah relasi virtual.
Definisi view adalah hasil (result) dari sebuah Query terhadap relasi- relasi dasar (atau relasi real). Hasil (view) ini tidak disimpan dalam database seperti relasi dasar. Sebuah view adalah sebuah jendela dinamik, dalam artian bahwa ia mencerminkan semua update yang dilakukan terhadap database. Disamping pemakaiannya di dalam skemaexternal, view juga berguna untuk menjamin data- security dengan cara yang sederhana. Dengan memilih subset dari database, view dapat menyembunyikan beberapa data.
Jika user mengakses database melalui view, mereka tak dapat melihat atau memanipulasi hidden-data, dengan demikian data akan menjadisecure.
Perhatikan bahwa, dalam sistem DBMS terdistribusi, sebuah view dapat diturunkan dari relasi- relasi terdistribusi. Akses ke sebuah view akan memer lukan eksekusi dari kueri terdistribusi yang berhubungan dengan definisi view ter sebut.
Isu penting dalam DBMS terdistribusi adalah untuk membuat materialisasi view dengan cara yang efisien. Kita akan melihat bagaimana konsep snapshot akan membantu dalam memecahkan masalah ini, tapi ter lebih dulu kita akan berkonsentrasi pada DBMS terpusat.
Konteks view dalam DBMS terpusat, sebuah view adalah sebuah relasi yang diturunkan dari relasi relasi dasar , sebagai hasil dari sebuah kueri relasional.



Contoh penggunaan view dalam SQL :
set pagesize 500
alter session set nls_date_format = 'DD.MM.YYYY';

create table prices_ (
sku varchar2(38),
price number,
valid_from date
);

insert into prices_ values ('4711', 18, '08.01.2003');
insert into prices_ values ('4711', 19, '01.05.2000');
insert into prices_ values ('4711', 20, '18.01.2001');
insert into prices_ values ('4711', 21, '09.01.2000');

insert into prices_ values ('beer', 14, '07.03.2000');
insert into prices_ values ('beer', 15, '10.01.2003');
insert into prices_ values ('beer', 16, '18.01.2001');
insert into prices_ values ('beer', 19, '16.11.2001');
insert into prices_ values ('beer', 17, '19.02.2002');


create view prices_today_ as
select
sku,
price,
valid_from
from
(select
sku,
price,
valid_from,
rank() over (partition by sku order by valid_from desc) r
from
prices_
)
where r=1;


select * from prices_today_;

drop table prices_;
drop view prices_today_;


Sumber

Senin, 25 Juli 2011

Trigger adalah blok PL/SQL atau prosedur yang berhubungan dengan table, view, skema atau database yang dijalankan secara implicit pada saat terjadi sebuah event. Trigger merupakan store procedure yang dijalankan secara automatis saat user melakukan modifikasi data pada tabel. Modifikasi data yang dilakukan pada tabel yaitu berupa perintah INSERT, UPDATE, dan DELETE. INSERT , UPDATE dan DELETE bisa digabung jadi satu trigger yang dinamakan Multiple Trigger.

Tipe dari trigger adalah :

· Application trigger : diaktifkan pada saat terjadi event yang berhubungan dengan sebuah aplikasi

· Database trigger : diaktifkan pada saat terjadi event yang berhubungan dengan data (seperti operasi DML) atau event yang berhubungan dengan sistem (semisal logon atau shutdown) yang terjadi pada sebuah skema atau database.

Trigger perlu dibuat pada saat :

· Membentuk sebuah aksi tertentu terhadap suatu event
· Memusatkan operasi global

Trigger tidak perlu dibuat, jika :

· Fungsionalitas yang diperlukan suatu ada pada Oracle server
· Duplikat atau sama dengan fungsi trigger yang lain.

Sintak penulisan dari database trigger, berisi komponen berikut :

1. Trigger timing :
a. Untuk tabel : BEFORE, AFTER
b. Untuk view : INSTEAD OF
2. Trigger event : INSERT, UPDATE atau DELETE
3. Nama tabel : yaitu nama tabel atau view yang berhubungan dengan trigger
4. Tipe trigger : Baris atau Pernyataan (statement)
5. klausa WHEN : untuk kondisi pembatasan
6. trigger body : bagian prosedur yang dituliskan pada trigger

Trigger timing adalah waktu kapan trigger diaktifkan. Ada tiga macam trigger timing, yaitu :

· BEFORE : trigger dijalankan sebelum DML event pada tabel
· AFTER : trigger dijalankan setelah DML event pada tabel
· INSTEAD OF : trigger dijalankan pada sebuah view.

Trigger event ada 3 kemungkinan : INSERT, UPDATE atau DELETE.
Pada saat trigger event UPDATE, kita dapat memasukkan daftar kolom untuk mengidentifikasi kolom mana yang berubah untuk mengaktifkan sebuah trigger (contoh : UPDATE OF salary ... ). Jika tidak ditentukan, maka perubahannya akan berlaku untuk semua kolom pada semua baris.

Tipe trigger ada 2 macam, yaitu :

· Statement : trigger dijalankan sekali saja pada saat terjadi sebuah event. Statement trigger juga dijalankan sekali, meskipun tidak ada satupun baris yang dipengaruhi oleh event yang terjadi.

· Row : trigger dijalankan pada setiap baris yang dipengaruhi oleh terjadinya sebuah event. Row trigger tidak dijalankan jika event dari trigger tidak berpengaruh pada satu baris pun.

Trigger body mendefinisikan tindakan yang perlu dikerjakan pada saat terjadinya event yang mengakibatkan sebuah trigger menjadi aktif.



sumber

Pengertian VIEW pada Database Management System (DBMS)

Salah satu keuntungan dari model relasional adalah model tersebut memberikan independensi data sepenuhnya secara logikal. Skemaexternal akan mengijinkan user untuk memiliki view ter tentu dari database.
Dalam sistem relasional, sebuah view adalah sebuah relasi virtual.
Definisi view adalah hasil (result) dari sebuah Query terhadap relasi- relasi dasar (atau relasi real). Hasil (view) ini tidak disimpan dalam database seperti relasi dasar. Sebuah view adalah sebuah jendela dinamik, dalam artian bahwa ia mencerminkan semua update yang dilakukan terhadap database. Disamping pemakaiannya di dalam skemaexternal, view juga berguna untuk menjamin data- security dengan cara yang sederhana. Dengan memilih subset dari database, view dapat menyembunyikan beberapa data.
Jika user mengakses database melalui view, mereka tak dapat melihat atau memanipulasi hidden-data, dengan demikian data akan menjadisecure.
Perhatikan bahwa, dalam sistem DBMS terdistribusi, sebuah view dapat diturunkan dari relasi- relasi terdistribusi. Akses ke sebuah view akan memer lukan eksekusi dari kueri terdistribusi yang berhubungan dengan definisi view ter sebut.
Isu penting dalam DBMS terdistribusi adalah untuk membuat materialisasi view dengan cara yang efisien. Kita akan melihat bagaimana konsep snapshot akan membantu dalam memecahkan masalah ini, tapi ter lebih dulu kita akan berkonsentrasi pada DBMS terpusat.
Konteks view dalam DBMS terpusat, sebuah view adalah sebuah relasi yang diturunkan dari relasi relasi dasar , sebagai hasil dari sebuah kueri relasional.

Contoh penggunaan view dalam SQL :


set pagesize 500
alter session set nls_date_format = 'DD.MM.YYYY';

create table prices_ (
sku        varchar2(38),
price      number,
valid_from date
);

insert into prices_ values ('4711', 18, '08.01.2003');
insert into prices_ values ('4711', 19, '01.05.2000');
insert into prices_ values ('4711', 20, '18.01.2001');
insert into prices_ values ('4711', 21, '09.01.2000');

insert into prices_ values ('beer', 14, '07.03.2000');
insert into prices_ values ('beer', 15, '10.01.2003');
insert into prices_ values ('beer', 16, '18.01.2001');
insert into prices_ values ('beer', 19, '16.11.2001');
insert into prices_ values ('beer', 17, '19.02.2002');


create view prices_today_ as
select
  sku,
  price,
  valid_from
from
  (select
     sku,
     price,
     valid_from,
     rank() over (partition by sku order by valid_from desc) r
   from
     prices_
  )
where r=1;


select * from prices_today_;

drop table prices_;
drop view prices_today_;