Articles Comments

{ Berbagi, Menulis, Dan Mengajar } Ilmu… » 7. Operating System » Gammu Trigger

Gammu Trigger

Barusan diminta sama bos (DR. Hasyim Gautama) untuk membuat otomatisasi membalas sms pada aplikasi sms gateway yang sudah aku implementasikan. Setelah googling beberapa saat, dapat cara untuk membuat trigger di mysql.

A trigger is a stored procedure that is invoked when a particular event occurs. For example, you can install a stored procedure that is triggered each time a record is deleted from a transaction table and that automatically deletes the corresponding customer from a customer table when all his transactions are deleted. (MySQL Manual)

Jadi suatu event bisa diotomatisasi jika ada event lain yang telah terjadi. Sederhananya begitu. Di sini aku mengimplementasikan dengan mencoba pada dua hal.

1. Menginsert ke tabel lain dalam satu database.
Pada kasus ini untuk membuat sms balasan, caranya cukup mengatur agar setiap ada isian baru di tabel inbox, mysql otomatis meng-insert isian baru ke tabel outbox.
Karena pada aplikasi sms gateway ini sudah ada daemon khusus, maka otomatis isian tabel outbox akan dikirim sebagai pesan sms.

Ini sintaksnya : (cukup sebagai refernsi saja, tergantung struktur database dan tabelnya)

view plaincopy to clipboardprint?
DELIMITER//
CREATE TRIGGER test AFTER INSERT ON inbox
FOR EACH ROW BEGIN
INSERT INTO outbox VALUES (sysdate(),sysdate(),(SELECT SenderNumber FROM inbox),’Default_No_Compression’,’Terima kasih. Laporan Anda akan segera ditindak lanjuti.’,sysdate(),’yes’);
END;
//DELIMITER
Untuk lebih jelas tentang trigger di atas, mungkin perlu diketahui struktur tabel outbox adalah seperti ini (nama field dan tipe datanya) :
· `UpdatedInDB` timestamp
· `InsertIntoDB` timestamp
· `SendingDateTime` timestamp
· `Text` text
· `DestinationNumber` varchar(20)
· `Coding` enum(’Default_No_Compression’, ‘Unicode_No_Compression’, ‘8bit’, ‘Default_Compression’, ‘Unicode_Compression’)
· `UDH` text
· `Class` int(11)
· `TextDecoded` varchar(160)
· `ID` int(11) unsigned
· `MultiPart` enum(’false’,’true’)
· `RelativeValidity` int(11)
· `SenderID` text
· `SendingTimeOut` timestamp
· `DeliveryReport` enum(’default’,’yes’,’no’)
· `CreatorID` text

Sedangkan struktur tabel inbox seperti ini (nama field dan tipe datanya):
· `UpdatedInDB` timestamp
· `ReceivingDateTime` timestamp
· `Text` text
· `SenderNumber` varchar(20)
· `Coding` enum(’Default_No_Compression’, ‘Unicode_No_Compression’, ‘8bit’, ‘Default_Compression’, ‘Unicode_Compression’)
· `UDH` text
· `SMSCNumber` varchar(20)
· `Class` int(11)
· `TextDecoded` varchar(160)
· `ID` int(11) unsigned
· `RecipientID` text
· `Processed` enum(’false’, ‘true’)

2. Menginsert ke tabel lain yang berbeda database.
Pada kasus ini untuk membuat copy isian satu database ke database master. Caranya cukup mengatur agar setiap ada isian baru di tabel inbox (database slave), mysql otomatis meng-insert isian baru yang sama ke tabel inbox di database master.

Nama database slave adalah ’smsd1′, sedangkan database masternya ’smsd0′.
Berikut ini sintaksnya :

view plaincopy to clipboardprint?
DELIMITER //
CREATE TRIGGER slave2master AFTER INSERT ON smsd1.inbox
FOR EACH ROW BEGIN
INSERT INTO smsd0.inbox VALUES ((SELECT UpdatedInDB FROM smsd1.inbox),(SELECT ReceivingDateTime FROM smsd1.inbox),(SELECT Text FROM smsd1.inbox),(SELECT SenderNumber FROM smsd1.inbox),(SELECT Coding FROM smsd1.inbox),(SELECT UDH FROM smsd1.inbox),(SELECT SMSCNumber FROM smsd1.inbox),(SELECT Class FROM smsd1.inbox),(SELECT TextDecoded FROM smsd1.inbox),(SELECT ID FROM smsd1.inbox),(SELECT RecipientID FROM smsd1.inbox),(SELECT Processed FROM smsd1.inbox),1);
END;
//DELIMITER;

Filed under: 7. Operating System

Leave a Reply

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>