Trigger adalah suatu prosedur yang otomatis akan dijalankan apabila “pemicu” dari trigger itu dipanggil.
sebagai contoh: penghapusan satu tabel akan memicu suatu trigger untuk menghapus pada tabel yang lain yang telah ditunjuk terlebih dahulu. dibawah ini saya berikan satu contoh penggunaan trigger pada database MySQL.
Sebagai contoh kita siapkan terlebih dahulu sebuah database dan tabel yang akan diuji coba seperti dibawah ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | create database mytrigger; create table coba ( kode varchar(5) not null,nama varchar(35) not null, primary key (kode)) create table coba2 ( kode varchar(5) not null,nama varchar(35) not null, primary key (kode)) create table tran ( kode varchar(5) not null, kodetran varchar(5),jumlah double, primary key nkode (kode,kodetran)) |
Kemudian buatlah sebuah trigger dengan kode seperti dibawah ini:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | delimiter $$ create trigger auto_insert_coba2 before insert on coba for each row begin insert into coba2 (kode,nama) values (NEW.kode,NEW.nama); end$$ create trigger auto_update_coba2 before update on coba for each row begin update coba2 set nama=NEW.nama where kode=NEW.kode; end$$ create trigger auto_delete_coba2 before delete on coba for each row begin delete from coba2 where kode=OLD.kode; delete from tran where kode=OLD.kode; end$$ |
pada trigger di atas setiap kali perubahan dilakukan terhadap tabel COBA maka secara otomatis
tabel COBA2 akan dipengaruhi / terpengaruh.
Pembuatan trigger ini dapat digunakan untuk berbagai keperluan, selamat mencoba…..!
Jangan lupa untuk memberikan komentar anda. terima kasih.
wuaduoh mas…ndak iso iku…kok gak bisa yaaa waktu create trigger auto_insert_coba2, keluarnya begini nih :
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ” at line 1
ak pakenya mysql 5.0 loh…bug yah…kalo
saya udah coba lagi ok tuh perintahnya…
hmmmm kalau pembuatan trigger tersebut langsung pada kotak SQL maka perintah
delimiter $$
nggak perlu diketikkan tetapi langsung ketikkkan $$ pada kotak input
lihat gambarnya disini:
http://farm5.static.flickr.com/4015/4295472060_0eaf0b2499_o.jpg
.-= anto2k´s last blog ..KEBOCORAN DOKUMEN PENTAGON =-.
selamat mencoba ya… ehm kalau diberi cendol
kagak keberatan nich….
1. pada baris satu, coba ubah menjadi:
create database if not exsists mytrigger;
2. setelah create table (….) akhiri dengan ‘;’
.-= windu purnomo´s last blog ..Praktikum Algoritma dan Pemrograman =-.
terima kasih mr Windu
that’s good solution
Biar lebih afdol, ikutan nimbrung bahas mengenai trigger nich. http://bit.ly/TriggerMySQL
.-= achmatim´s last blog ..Mengenal Trigger di MySQL =-.
MATUR SUWUN MAS ANTOK.. tolong add ym saya utrablora fb : fb_putra@yahoo.co.id
Semaleman saya cari triger, habis sbuh saya baru ketemu dengan web njenengan.. thenqu.. silahkan mampir di blog saya
.-= budi setyawan´s last blog ..PHP PAGINATION MySQL =-.
kalo implementasinya pada program gimana mas? oh ya saya pakai delphi. tanks
ea….. kak mksih…..
makasih mas,,
saya punya kasus mini market mas,
ni table barang
CREATE TABLE `barang` (
`kode_barang` varchar(10) collate latin1_general_ci NOT NULL,
`kode_barcode` varchar(35) collate latin1_general_ci default NULL,
`jenis_barang` varchar(35) collate latin1_general_ci NOT NULL,
`nama_barang` varchar(50) collate latin1_general_ci NOT NULL,
`harga_beli` int(15) default NULL,
`harga_jual` int(15) NOT NULL,
`stock` int(15) NOT NULL,
PRIMARY KEY (`kode_barang`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
INSERT INTO `barang` (`kode_barang`, `kode_barcode`, `jenis_barang`, `nama_barang`, `harga_beli`, `harga_jual`, `stock`) VALUES
(‘1’, ‘123456789’, ‘permen’, ‘Nano’, 10000, 15000, 100);
ni table rincibelanja
CREATE TABLE `penjualanrinciminimarket` (
`no_nota` varchar(10) collate latin1_general_ci NOT NULL,
`kode_barang` varchar(10) collate latin1_general_ci NOT NULL,
`kode_barcode` varchar(35) collate latin1_general_ci NOT NULL,
`jenis_barang` varchar(35) collate latin1_general_ci NOT NULL,
`harga_jual` double NOT NULL,
`jumlah` int(10) NOT NULL,
`sub_total` double NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
nah yang ingin saya tanyakan gimana sintax triggernya,
jika ada kode barang dan jumlah yang masuk pada tabel rinci kemudian mempengaruhi stock barang yang ada pada tabel barang dengan kondisi kode barang pada tabel barang sama dengan kode barang pada tabel rincibelanja, makasih mas mohon bantuannya ya mas
bisa kasih contek ga yang melibatkan varible
saya buat kok ga bisa ya…
DELIMITER ;;
CREATE TRIGGER `trg_isi_1` BEFORE INSERT ON `tbl_data` FOR EACH ROW BEGIN
declare nilai_akhir text ;
select nilai_akhir into nilai_akhir from tbl_master where kode =’a’
SET NEW.item_id = nilai_akhir ;
END;;
DELIMITER ;
Mohon pencerahannya kok waktu saya coba triggernya keluar ini…
#1235 – This version of MySQL doesn’t yet support ‘multiple triggers with the same action time and event for one table’
Grou´s last blog post ..Mengenal Trigger di My SQL
Grou, mysqlnya minimal versi 5?
aryanto´s last blog post ..Cara Merubah Tampilan Windows XP seperti Windows 7 Ultimate
mas aryanto, saya mau nanya dan mohon langsung saja lihat pada ilustrasi dibawah ini
begin // Begins fungsi nya untuk apa?
insert into coba2 (kode,nama) values (NEW.kode,NEW.nama);
end$$
apakah kalo buat 1 trigger harus pake begins juga?
mas bisa bantuin nga aku mau buat sms gateway pemilihan(poling) tapi aku bingung buat trigernya…aku punya contoh triger aku dpat dari artikel di internet
ini triger yg aku dapat beserta syntax mysql nya:
ini mysqlnya
CREATE TABLE `data_polling` (
`pilihan` varchar(25) NOT NULL,
`vote` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
– Data pilihan voting
INSERT INTO `data_polling` VALUES (‘glenn’, 0);
INSERT INTO `data_polling` VALUES (‘afghan’, 0);
INSERT INTO `data_polling` VALUES (‘rossa’, 0);
INSERT INTO `data_polling` VALUES (‘krisdayanti’, 0);
ini trigernya:
**********************trigger*************************
delimiter $
create trigger
smsd.sms
AFTER
INSERT
on
smsd.inbox
for each row BEGIN
DECLARE smsx,smsz,smsmasuk varchar(200);
DECLARE format,pilihansms,no_pengirim varchar(200);
DECLARE error,x,jmlvote int;
set smsz=new.TextDecoded;
select ltrim(smsz) into smsx;
select rtrim(smsx) into smsmasuk;
set no_pengirim=new.SenderNumber;
select substring_index(smsmasuk,’ ‘,1) into format;
select substring(smsmasuk,6) into pilihansms;
select count(pilihan) from polling.data_polling
where pilihan=pilihansms into x;
select vote from polling.data_polling
where pilihan=pilihansms into jmlvote;
set jmlvote=jmlvote+1;
set error=0;
if format=’idol’ and x>0 then
update polling.data_polling set vote=jmlvote where pilihan=pilihansms;
else
set error=1;
end if;
if error=1 then
insert into smsd.outbox values (”, ”, ”, NULL, no_pengirim, ‘Default_No_Compression’, NULL, -1, ‘Maaf,format yang anda masukkan salah. Silahkan kirim ulang’,”, ‘false’,-1, ”, ”, ”, ”);
end if;
if error=0 then
insert into smsd.outbox values (”, ”, ”, NULL, no_pengirim, ‘Default_No_Compression’, NULL, -1, ‘Terimakasih,pilihan anda telah kami tampung’,”, ‘false’,-1, ”, ”, ”, ”);
end if;
END;
$
**********************trigger*************************
bisa bantuin nga mas apa syntax trigernya udah benar..?
terima kasih….
pak klo di pemogramn java kode nya sama kaya di atas
craz, rasa2nya sih sama gitu. sebab triggernya dibuat langsung di dalam database mysql, tapi aq belum pernah nyoba, silahkan jika ada agan yang telah mencoba share disini, monggo…..
Pak kalo saya punya kasus pd lelang barang, misalnya saya melelang barang slma 3 hari, saya melelang tgl 1 brarti nanti tgl 3 status barang diupdate menjadi expired….gmn tuh pak caranya….tanpa melibatkan scrip php…cukup di mysql aja trims
yanno, kalau itu aq belum pernah coba, namun, sebuah trigger seperti yg dijelaskan diatas harus ada ‘pemicu’ nya terlebih dahulu. bisa jadi anda dapat menggunakan procedure yg digabung dengan trigger mysql, coba baca kembali manual mysqlnya. Jadi pada program lelang, setiap index.php dipanggil maka menjalankan procedure pengecekkan barang-barang yang sudah expired. demikian selamat mencoba dan berkreasi kalau udah selesai mohon sharing nya….
Gini saya buat tabel mysql isinya kira-kira seperti ini
mysql> desc data;
+———–+————-+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+———–+————-+——+—–+———+—————-+
| id | int(5) | NO | PRI | NULL | auto_increment |
| reporter | varchar(50) | NO | | NULL | |
| tps | varchar(5) | NO | | NULL | |
| desa | varchar(50) | NO | | NULL | |
| kecamatan | varchar(50) | NO | | NULL | |
| dapil | varchar(30) | NO | | NULL | |
| pas1 | int(11) | NO | | NULL | |
| pas2 | int(11) | NO | | NULL | |
| pas3 | int(11) | NO | | NULL | |
| pas4 | int(11) | NO | | NULL | |
| pas5 | int(11) | NO | | NULL | |
+———–+————-+——+—–+———+—————-+
11 rows in set (0.00 sec)
mysql>
Mohon saya dibantu bagaimana cara buat trigger agar tabel data tersebut bisa di input melalui sms..
engine sms gateway saya menggunakan gammu, jadi ketika sms yang dikirim ke nomer tujuan, otomatis akan masuk ke tabel inbox bawaan gammu.. gimana caranya sms yang dikirim dengan format tertentu misalnya begini
agus irawan,2,luhu,telaga,kab.belibis,111,222,333,444,555
bisa diparsing sehingga ikut ter input ke tabel data dalam mysql tadi..??
saya bingung membuat triggernya dan kalupun tidak menggunakan trigger ada tidak solusi yang lain…
terima kasih
coba gunakan PROCEDURE tersimpan yg ada di MySQL (silahakan baca kembali tentang PROCEDURE)
Makasih pak infonya, lagi ada tugas dari dosen nih tentang trigger. abis baca ini jadi ada pencerahan
download software aplikasi gratis´s last blog post ..Bermain Game Angry Birds Secara Online
Makasih pak, tulisanmu telah menyelesaikan masalahku….
btw, ada nggak contoh sederhana store procedure???
trimakasi h banyak….
tq. cendolnya he.he.he
pak, saya kesusahan dengan masalah durasi di aplikasi pakir yang saya buat bisa membantu g ?
saya tdk bisa untuk menghitung biaya parkirnya.
bisa saya kirim programnya dan mysqlnya. Mohon dibantu pak,
@jin: susahnya di sourcenya atau logikanya nich, coba dech kamu kirimkan ke emailku aplikasinya biar aq coba bantuin check codingnya
Om,,,kalo ane mau delete trigger ane yang ada relasinya
misalkan ane delete id_pendaftar=”1″ pada tabel pendaftar maka rows id_pendaftar=”1″ di tabel nilai_kuant juga otomatis akan kehaapus bagaimana ya om??
ini masalah ane ane share di sene om…….
http://www.i-bego.com/mysql/logika-if-di-create-trigger-procedure-mysql-t2821.html
ane minta emailnya om kalo boleh
pak, saya sudah membuat triggernya..
untuk melihat isi dari trigger tersebut bagaimana caranya?
dan, trigger itu kan log, apakah ada file nya di direktori ?
trims
coba gunakan software SQLYOG
@anto2k
Wah berbeli itu mas, awas jangan pakai bajakan.
visit my blog http://sugik.do-event.com/
mbahsomo´s last blog post ..Install pgadmin3 on ubuntu 11.10
@mbahsono: ho’oh, emang berbeli. atau coba juga yang gratisan heidisql.com, selamat mengunduh ya.
anto2k´s last blog post ..Cara membuat password proteksi USB Flashdisk dan Harddisk (hdd)
mas, saya lagi kebingungan dalam menyelesaikan Tugas Akhir Kuliah saya.
kasusnya pada SMS Gateway,
pada inbox seperti ini, “L 4562 WE#anwar#VIXION#2011#dst. . .”
saya bingung bgaimana caranya insert ke fild2 dalam dtabase dengan tanda pagar sbg pemisah,,apa bisa menggunakan trigger??
gan, klo gak salah ni trigernya buat sql server ya? bukan buat mysql front?
Terimakasih om ilmunya…
@anwar: mohon maaf banget belum pernah nyoba, tapi aplikasinya pakai apa yak??
@yoga: buat database mysql mas….
@ffredie: ma kasih kembali, senang bisa membantu anda….semoga sukses…
Thanks buat sharingnya, saya coba dulu…
apakah ini seperti STORE PROCEDURE?
thanks,
http://www.roniwahyu.com
http://www.roniwahyu.web.id/
http://www.wisatapedia.com
Pak saya mau tanya bagaimana script trigger supaya tidak terjadi hasil min pada tabel stock barang jika ada pengeluaran barang yang lebih banyak daripada jumlah yang terdapat di table stock?
mohon bantuannya …
mas anto sya mw tnya kalo trigger untuk total harga yang di dapat dari beberapa tabel berbeda gmn??
maav kalo pertanyaan saya sulit di mengerti soalnya sya msih pelajar….(baru belajar mysql)….!
@herman: mungkin harus diikutkan dengan pemanggilan prosedur tersimpannya, coba baca kembali penggunaan procedure di dalam database mysql.
@zhalsyah: sama sy juga baru belajar…(piss ), tinggal dimasukkan saja menggunakan variabel, coba latihan menggunakan tabel-tabel yg sederhana dulu misalnya: tabel1, tabel2, tabel3 trus di cari solusinya, aq yakin anda bisa, selamat otak-atik ya, semoga berhasil…
@roniwahyu: bukan, kalau prosedur tersimpan eksekusinya harus dipanggil dulu melalui fungsi CALL, tapi kalau trigger dia otomatis dijalankan asal ada pemicunya, perhatikan ilustrasi penggunaan di atas, demikian semoga membantu.
pak saya mau nanya tentang pengecekan stok barang ni….
jadi kasusnya gini pak, ketika terjadi penjualan dan stok barng tersebut nol,muncul peringatan bahwa stok habis & data ga tersimpan. kalo kasusnya seperti itu bisa pake trigger ga pak? dan kode triggernya gmn pak….??? mohon bantuannya pak…
@ezy: kalo kasusnya seperti itu sebaiknya pake procedure untuk melakukan pengecekan dulu terhadap saldo unit barang menggunakan STORED PROCEDURE…
anto2k´s last blog post ..Keanehan Produk Microsoft
haturnuhun kang anto2k,
tapi maksud ada tabel tran itu apa ya?
@akang mayer: tabel tran sebagai contoh saja, dalam kasus di atas misalkan tabel tran berfungsi menyimpan berbagai transaksi yang terkait tabel coba dan coba2. tabel coba dan coba2 adalah file master (kode barang sebagai contoh) maka apabila kita menghapus masternya yang ada di tabel kode barang maka secara otomatis akan menghapus seluruh transaksi yg terkait tabel tersebut di tabel tran.
Jadi kemungkinan missing link dapat dihindari….
demikian…
cara kombinasi trigger dengan pernyataan conditional (if..else) gimana???
@yuki: binggung mode on (alias belum nyoba he.he.he.he) silahkan dech cari artikel ama yg lebih ahli atau tanyak mbah kangkung koe tuh si google….
Terima kasih untuk membuat upaya tulus untuk berbicara tentang hal ini. Saya merasa sangat kuat tentang hal itu dan ingin membaca lebih lanjut. Jika OK, karena Anda mencapai kebijaksanaan yang luas ekstra, mungkin Anda keberatan termasuk artikel tambahan yang mirip dengan yang satu ini dengan info tambahan? Ini akan sangat berguna dan bermanfaat bagi saya dan teman-temanku.
walau aq kagak ngerti apa maksudna…????
Terimakasih,informasi ini sangat berharga
saya memang sedang mencari tutorial trigger dalam bahasa Indonesia