Dalam membuat aplikasi database MySQL 5, kita bisa meletakkan fungsi-fungsi yang merupakan bisnis prosesnya dengan 2 pilihan

  1. Meletakkan fungsi-fungsi bisnis di dalam bahasa programming yang digunakan
    Cara ini mudah diimplementasikan. Untuk aplikasi yang sederhana lebih baik memakai metode ini.
    Untuk aplikasi yang kompleks, cara ini memiliki kelemahan:
    a. Jika processing banyak terjadi, performance akan turun
    b. Jika ada pengembangan lain dan memakai bahasa pemrograman lain, maka fungsi bisnis harus ditulis ulang
    c. Harus jeli mengenai konsistansi update suatu table yang mempunyai hubungan dengan tabel lain
  2. Meletakkan fungsi-fungsi bisnis di dalam database sebagai store procedure, trigger, view dan object database yang lain
    Peletakan fungsi bisnis di dalam store procedure dan trigger mempunyai keuntungan
    a. Performance cepat
    b. Konsistensi data table akan terjaga
    c. Jika ada pengembangan lain yang memakai bahasa pemrograman berbeda, tidak perlu menulis ulang fungsi-fungsi bisnis tersebut

Tabel Sales Order
Sebagai contoh kita akan membuat tabel sales order dan diisi dengan sebuah data:

CREATE TABLE sales_order(
customer_name VARCHAR( 50 ) NOT NULL ,
total_price DECIMAL( 9, 0 ) NOT NULL DEFAULT ‘0’,
total_hpp DECIMAL( 9, 0 ) NOT NULL DEFAULT ‘0’,
profit DECIMAL( 9, 0 ) NOT NULL DEFAULT ‘0’,
so_id INT NOT NULL AUTO_INCREMENT ,
PRIMARY KEY (so_id)
) ENGINE = InnoDB;
INSERT INTO sales_order (customer_name,so_id) VALUES (‘Serba Prima’, 1);

Hasilnya bisa dilihat di phpmyadmin :

Tabel Sales Item
Kemudian kita akan membuat tabel sales_item diisi dengan 2 data:

CREATE TABLE sales_item(
so_id INT NOT NULL ,
item_name VARCHAR( 100 ) NOT NULL ,
item_price DECIMAL( 8, 0 ) NOT NULL ,
hpp DECIMAL( 8, 0 ) NOT NULL ,
item_id INT NOT NULL AUTO_INCREMENT ,
PRIMARY KEY (item_id)
) ENGINE = InnoDB;

INSERT INTO sales_item(so_id,item_name,item_price,hpp) VALUES (1, ‘Keyboard’, 100000,85000);
INSERT INTO sales_item(so_id,item_name,item_price,hpp) VALUES (1, ‘Mouse’, 50000,40000);

Hasilnya :

Store Procedure Resume Sales Order
Kemudian Store Procedurenya
CREATE PROCEDURE resume_sales_order (IN p_so_id INT)
BEGIN
    DECLARE v_total_price DECIMAL;
    DECLARE v_total_hpp DECIMAL;
    SELECT SUM(item_price),SUM(hpp) INTO v_total_price,v_total_hpp FROM sales_item WHERE so_id=p_so_id;
    UPDATE sales_order SET total_price=v_total_price,total_hpp=v_total_hpp,profit=v_total_price-v_total_hpp WHERE so_id=p_so_id;
END
//

Untuk membuatnya pastikan delimiternya //

Menjalankan Store Procedure
Untuk menjalankan store procedurnya dengan menjalankan
CALL resume_sales_order(1)
dan isi tabel sales_order akan menjadi :

Di sini terlihat total_pricenya berubah dari 0 menjadi 150000, total_hpp menjadi 12500 dan profit menjadi 25000.

Langkah berikutnya adalah membuat Trigger di MySQL 5 .

Kunjungi www.proweb.co.id untuk menambah wawasan anda.

Store Procedure di MySQL 5