Membuat dan Menghapus Stored Function, Trigger, dan View

Selain database, ada beberapa data lain yang bisa disimpan di dalam database SQL. Semua data tersebut menyimpan satu atau sekumpulan statement yang terkait dengan tabel di dalam database. Isi database bisa berupa :

  • Tabel
  • View
  • Function
  • Trigger

Semua data di dalam database bisa dibuat dengan statement Create. Sintaks pembuatan tabel dan view relatif sama di setiap vendor sql. Sebaliknya, sintaks function dan trigger berbeda-beda untuk setiap vendor sql. 

View

View digunakan untuk menyimpan hasil dari query sebagai tabel. sintaksnya adalah sebagai berikut. 

  • CREATE VIEW nama_view AS {Statement Select}
View yang sudah digunakan bisa diperlakukan sebagai tabel di dalam statement select. Bedanya, saat isi tabel berubah, query dengan view yang sama hasilnya juga akan berubah. View tidak ditujukan untuk digunakan dalam statement insert, delete, atau update.

Contoh Query untuk membuat view : 
  • Create View harga_termahal AS SELECT * FROM barang Limit 0, 5
 View di atas bisa digunakan di dalam statement select seperti di bawah ini.
  • Select SUM(harga) AS total FROM harga_termahal

Stored Function dan Stored Procedure

Stored Procedure disimpan di dalam database seperti halnya view. Procedure bisa digunakan untuk menyimpan satu query atau lebih sebelum kemudian dipanggil. Selain function, kita juga bisa menggunakan function di SQL. Beda function dan Procedure adalah pada ada atau tidaknya nilai yang dikembalikan. Sintaksnya :
  • CREATE Procedure procedure_name(func_parameter1, func_parameter2, ..) RETURN {tipe data} Begin {kumpulan statement} end;
  • CREATE FUNCTION function_name(func_parameter1, func_parameter2, ..) RETURN {tipe data} Begin {kumpulan statement} end;
Kita perlu klausa delimiter yang bisa mengganti penanda akhir statement saat menulis stored function dalam SQL karena statement SQL dan end menggunakan tanda titik koma. Selain itu, ada beberapa klausa SQL yang bisa digunakan di dalam stored function seperti if dan else.
DELIMITER $$
CREATE FUNCTION CustomerLevel(
	credit DECIMAL(10,2)
) 
RETURNS VARCHAR(20)
DETERMINISTIC
BEGIN
    DECLARE level_pelanggan VARCHAR(20);

    IF kredit > 50000 THEN
		SET level_pelanggan = 'PLATINUM';
    ELSEIF (kredit <= 50000 AND 
			kredit <= 10000) THEN
        SET level_pelanggan = 'GOLD';
    ELSEIF kredit > 10000 THEN
        SET level_pelanggan = 'SILVER';
    END IF;
	-- kembalikan level_pelanggan
	RETURN (level_pelanggan);
END$$
DELIMITER ;

Stored function bisa dipanggil satatement call di dalam query. Sintaks pemanggilan stored function adalah sebagai berikut.

  • CALL nama_function(parameter[param1, param2, ...])

Trigger 

Berbeda dengan function yang perlu dipanggil, trigger akan dieksekusi secara otomatis saat ada query yang dieksekusi. Trigger dipicu statement Insert, Delete, dan Update. eksekusinya bisa setelah atau sebelum query dieksekusi. Sederhananya, ada 6 macam trigger yang bisa ditambahkan di dalam database SQL.
  • AFTER INSERT
  • AFTER UPDATE
  • AFTER DELETE
  • BEFORE INSERT
  • BEFORE UPDATE
  • BEFORE DELETE
Sintaks query untuk trigger hampir sama dengan function.
delimiter $$
CREATE TRIGGER nama_trigger BEFORE DELETE ON {nama tabel} FOR EACH ROW
BEGIN
    {kumpulan statement}
END $$ 
delimiter;

Untuk menghapus trigger, kalian bisa menggunakan drop.

Menghapus Isi Database

Untuk menghapus isi database, kita bisa menggunakan Statement Drop. Drop bisa digunakan pada tabel, trigger, function, view, dan database. Drop tidak bisa digunakan untuk menghapus baris data dalam tabel, karena sudah ada statement delete. Apapun yang dihapus, sintaksnya relatif sama sama.
  • DROP {nama database}
  • DROP {nama tabel}
  • DROP {nama view}
  • DROP {nama trigger}
  • DROP {nama function}