MYSQL : Trigger Cross Database

2010 April 5 at 2:25 pm Leave a comment

Dalam dunia pengembangan suatu aplikasi memang tidak ada ujungnya, bahkan keharusan kawin paksa satu aplikasi dengan aplikasi lain yang notabene memiliki database sendiri-sendiri tidak dapat dihindari.

Bahkan terkadang dalam perkawinan paksa tersebut adanya initimidasi berupa pemaksaan perubahan table data dari pihak keluarga aplikasi satu ke yang lainnya. Disini tantangan bagi pewaris pengembang harus pandai-pandai mencari jalan tengah. Biasa dalam dunia beginian banyak jalan menuju roma, misalnya bisa ditambahin di coding, atau menempelkan pada level trigger table. Untuk solusi melalui jalur trigger ini ada tipsnya, dibawah ini langkah-langkah sekaligus contoh bagaimana membuat trigger lintas database. Cuman sayang di MYSQL sampai detik pembuatan  tulisan ini saya belum menemukan solusi lintas server “linked server”. Atau barangakali pengunjung punya pengalaman lain bisa share tentang linked server di MYSQL………….

Let’s begin

Persyaratan:

  • user untuk bisa create trigger harus super user
  • user yang akan mengeksekusi database pertama harus mempunyai hak akases juga je database kedua

Skenario:

Table “test_emp” di database “pertama” akan tertrigger menginsert ke table “test_emp_history” yang ada di database “kedua” begitu diupdate,

Langkah-langkah:

1. Membuat database pertama

create database pertama;
#pindah ke database pertama
use pertama;

#buat table test_emp
create table test_emp (
emp_no varchar(10),
emp_name varchar(25)
);

2. Membuat database kedua

create database kedua;
#pindah ke database kedua
use kedua;
create table test_emp_history(
status varchar(10),
emp_no varchar(10),
emp_name varchar(25)
);

3. Membuat trigger

#pindah ke database pertama
use pertama;

#buat trigger di table test_emp
delimiter $$
create trigger test_bef_emp_updt
before update on test_emp
for each row begin
insert into kedua.test_emp_history
values(‘updt’,old.emp_no,old.emp_name);
END $$
delimiter
;

4. Test trigger

#Pindah ke database pertama

use pertama;

#Insert ke table test_emp

insert into test_emp values(‘201′,’Ahmad’);

insert into test_emp values(‘202′,’Muhammad’);


#Update table test_emp
update test_emp set emp_name=’salsabila’ where emp_no=’201′;


#Lihat table test_emp_history pada database kedua

SELECT * FROM kedua.test_emp_history;

Entry filed under: MYSQL. Tags: .

Kepada Saudariku, Para Muslimah: Kami Iri Pada Kalian Ambil data terkecil ama terbesar Asc /Desc di Oracle

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Categories


%d bloggers like this: