Membuat TRIGGER pada database MySQL

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.

0 0 votes
Article Rating
Subscribe
Notify of
guest
CommentLuv badge
[+] kaskus emoticons nartzco

 
What is 5 + 8 ?
Please leave these two fields as-is:
59 Comments
Inline Feedbacks
View all comments
britantyo
britantyo
14 years ago

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

anto2k
14 years ago

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 =-.

anto2k
14 years ago

selamat mencoba ya… ehm kalau diberi cendol :cendol

kagak keberatan nich….

windu purnomo
14 years ago

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 =-.

anto2k
14 years ago

:thanks2 terima kasih mr Windu

that’s good solution

achmatim
14 years ago

Biar lebih afdol, ikutan nimbrung bahas mengenai trigger nich. http://bit.ly/TriggerMySQL
.-= achmatim´s last blog ..Mengenal Trigger di MySQL =-.

budi setyawan
13 years ago

MATUR SUWUN MAS ANTOK.. tolong add ym saya :putrablora 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 =-.

gendro
13 years ago

kalo implementasinya pada program gimana mas? oh ya saya pakai delphi. tanks

manz....
13 years ago

ea….. kak mksih…..

al
al
13 years ago

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

budi
13 years ago

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 ;

Grou
13 years ago

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

aryanto
13 years ago

Grou, mysqlnya minimal versi 5?
aryanto´s last blog post ..Cara Merubah Tampilan Windows XP seperti Windows 7 Ultimate

Bayu
13 years ago

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?

vic
vic
13 years ago

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….

craz
craz
13 years ago

pak klo di pemogramn java kode nya sama kaya di atas

Yanno
13 years ago

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

uci suicide
uci suicide
12 years ago

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

download software aplikasi gratis

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

feri o sinaga
12 years ago

Makasih pak, tulisanmu telah menyelesaikan masalahku….
btw, ada nggak contoh sederhana store procedure???
trimakasi h banyak….
:)
:2thumbup :toast

jin
jin
12 years ago

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,

kyurozona
12 years ago

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??
:sup2: :sup2:

kyurozona
12 years ago

ini masalah ane ane share di sene om…….

http://www.i-bego.com/mysql/logika-if-di-create-trigger-procedure-mysql-t2821.html

:nohope

ane minta emailnya om kalo boleh

herwin
herwin
12 years ago

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

mbahsomo
12 years ago


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

anwar
anwar
12 years ago

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??

Yoga Putra
Yoga Putra
12 years ago

gan, klo gak salah ni trigernya buat sql server ya? bukan buat mysql front?

ffredie
12 years ago

Terimakasih om ilmunya…

roniwahyu
12 years ago

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

:2thumbup :2thumbup

Herman
Herman
12 years ago

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 …

zhalsyah
12 years ago

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)….!

ezy
ezy
12 years ago

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…

Akang Mayer
11 years ago

:shakehand2 haturnuhun kang anto2k,
tapi maksud ada tabel tran itu apa ya? :bingung

yuki
11 years ago

cara kombinasi trigger dengan pernyataan conditional (if..else) gimana???

Norway escort agency
11 years ago

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.

Farhan
10 years ago

Terimakasih,informasi ini sangat berharga
saya memang sedang mencari tutorial trigger dalam bahasa Indonesia