halida’s

my life, my journey, and programming

Create Trigger dengan MySQL 5 Mei 30, 2008

Diarsipkan di bawah: Basis Data — halida ernita @ 3:45 AM
Tags: ,

Trigger merupakan nama dari object database yang dikaitkan dengan sebuah tabel dan diaktifkan ketika terjadi sebuah even terhadap tabel. Database event tersebut adalah proses insert, update, dan delete.
Trigger akan secara otomatis dijalankan ketika suatu event/aksi berlangsung pada database.
Trigger tidak dapat langsung dieksekusi seperti Store procedure, tidak memiliki parameter dan return code.

Sintaks untuk trigger:

CREATE [DEFINER = { user | CURRENT_USER }] TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt

trigger_time : BEFORE atau AFTER
trigger_event : INSERT, UPDATE, DELETE

Contoh trigger untuk proses insert
Pertama create table berikut


 CREATE TABLE test1(a1 INT);
 CREATE TABLE test2(a2 INT);

Kemudian create trigger

 DELIMITER //
 CREATE TRIGGER testref BEFORE INSERT ON test1
 FOR EACH ROW BEGIN
 INSERT INTO test2 SET a2 = NEW.a1;
 END;
 //DELIMITER;

Coba lakukan proses insert

INSERT INTO test1 values (1),(2),(3);
 SELECT * FROM test1;
 SELECT * FROM test2;

contoh trigger untuk proses update

DELIMITER //

create trigger update_coba AFTER UPDATE ON test1
FOR EACH ROW BEGIN
UPDATE test2 set a2=new.a1 where a2=3;
END;
//DELIMITER;

UPDATE test1 set a1=4 where a1=3;
SELECT * FROM test1;
SELECT * FROM test2;

contoh trigger untuk proses delete

DELIMITER //
 CREATE TRIGGER delete_coba AFTER DELETE ON test1
 FOR EACH ROW BEGIN
 DELETE FROM test2 where a2=1 ;
 END;
 //DELIMITER;

DELETE FROM test1 where a1=2;
 SELECT * FROM test1;
 SELECT * FROM test2;
 

Create Store Procedure dengan MySQL 5 Mei 30, 2008

Diarsipkan di bawah: Basis Data — halida ernita @ 3:30 AM
Tags: ,

store procedure merupakan sebuah script/batch. Script ini disimpan dalam pada database, bukan file terpisah. Tidak seperti script biasa, store procedure bisa memiliki parameter input , output dan return values. Untuk MySQL baru bisa disupport untuk MySQL 5 ke atas

Sintaksnya:

CREATE [DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body

CREATE FUNCTION sp_name
[DEFINER = { user | CURRENT_USER }]
([func_parameter[,...]]) RETURNS type [characteristic ...] routine_body

proc_parameter:
[ IN | OUT | INOUT ] param_name type

func_parameter:
param_name type

type:
Any valid MySQL data type

characteristic:
LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } | COMMENT 'string'

routine_body:
Valid SQL procedure statement

Berikut ini merupakan contoh store procedure yang saya buat

DELIMITER //

DROP PROCEDURE IF EXISTS `perusahaan`.`sp_dept` //
CREATE DEFINER=`root`@`localhost`
PROCEDURE `perusahaan`.`sp_dept` ()
BEGIN
SELECT * FROM department;
END

//DELIMITER ;

untuk menjalankan store procedure cara menjalankannya dengan

call sp_name();

untuk conth yang diatas:

call sp_dept

Kelebihan store procedure adalah dia bisa menggunakan input dan output parameter, berikut ini contoh store procedure menggunakan parameter

DELIMITER //

DROP PROCEDURE IF EXISTS `perusahaan`.`sp_insertDepartment` //
CREATE PROCEDURE `perusahaan`.`sp_insertDepartment` (IN dnumber INT ,dname varchar(15))
BEGIN
INSERT INTO Department VALUES (dnumber,dname);
END
//DELIMITER ;

Tujuan dari store procedure adalah mengurangi penulisan query yang sama dengan berulang-ulang. Dengan adanya store procedure kita cukup memanggil store procedure saja