Selasa, 14 Januari 2014

Trigger 2

Setelah sebelumnya kita telah mempelajari bagaimana membuat trigger dalam database, Kali ini kita akan mempelajari tentang bagaimana caranya membuat trigger dalam sistem.
Di dalam system terdapat Event-event Yang Mungkin terjadi yaitu :


Event
Possible Value
AFTER SERVERERROR
Trigger akan diaktifkan ketika terjadinya server error
AFTER LOGON
Trigger akan diaktifkan ketiga ada user yang masuk ke database
BEFORE LOGOFF
Trigger akan diaktifkan ketika user ingin keluar dari database
AFTER STARTUP
Trigger akan dijalankan ketika database dijalankan
BEFORE SHUTDOWN
Trigger akan dijalankan ketika database ingin di shut down

Kita dapat menggunakan event-event trigger diatas pada SCHEMA maupun DATABASE tetapi tidak untuk event ShutDown dan StartUp yang hanya dapat dijalankan pada DATABASE saja.
Syntax :
CREATE [OR REPLACE] TRIGGER trigger_name
timing
[database_event1 [OR database_event2 OR ...]]
ON {DATABASE|SCHEMA}
trigger_body
Contoh :
Pada contoh kali ini kita akan membuat sebuah trigger yang digunakan untuk mengetahui kapan dan siapa user yang login dan logoff pada sebuah schema.
Hal pertama yang kita lakukan  adalah membuat sebuah table History yang nantinya akan menampung data tentang siapa yang login dan logoff dari schema
CREATE TABLE History (
Users 
Varchar2(20),
LogDate 
Date,
Action 
VARCHAR2(20)

);
Setelah itu kita buat 2 buah trigger yaitu trigger logon_trig yang digunakan untuk memasukkan detail data user yang logon ke dalam tabel history dan yang kedua adalah trigger logoff_trig yang digunakan untuk memasukkan detail data user yang logoff dari skema.
CREATE OR REPLACE TRIGGER logon_trig
AFTER LOGON ON SCHEMA
BEGIN
INSERT INTO History VALUES (USER, SYSDATE, 'Logging on');
END;
/

CREATE OR REPLACE TRIGGER logoff_trig
BEFORE LOGOFF ON SCHEMA
BEGIN
INSERT INTO History VALUES (USER, SYSDATE, 'Logging off');
END;
/



Karena contoh diatas kita menspesifikkan trigger tersebut pada schema (ON SCHEMA), trigger logon dan logoff_trig hanya akan diaktifkan ketika kita login dan logoff pada schema tempat kita membuat trigger login dan logoff_trigger, misalkan kita membuat trigger tersebut pada schema yang dimiliki oleh hr, maka data yang ada adalah data yang keluar dan masuk pada skema hr.
Sedangkan jika kita menspesifikkan trigger tersebut pada DATABASE (ON DATABASE), trigger tersebut akan aktif terhadap schema yang dimiliki oleh semua user. Namun untuk dapat membuat sebuah trigger pada database diperlukan sebuat ADMINISTER DATABASE TRIGGER privilege.
Berikut Privilege yang digunakan dalam trigger :
  • CREATE/ALTER/DROP (ANY) TRIGGER privilege, yang digunakan untuk membuat trigger pada schema
  • ADMINISTER DATABASE TRIGGER privilege, yang digunakan untuk membuat trigger dalam database
  • EXECUTE privilege, yang digunakan apabila trigger yang kita buat diperuntukkan untuk object yang tidak kita miliki

CALL Statement

Dengan Call Statement, kita dapat menjalankan stored procedure di dalam Trigger
Syntax :
CREATE [OR REPLACE] TRIGGER trigger_name
timing
event1 [OR event2 OR event3]
ON table_name
[REFERENCING OLD AS old | NEW AS new]
[
FOR EACH ROW]
[
WHEN condition]
CALL procedure_name
/
Contoh :
CREATE TRIGGER salary_check
BEFORE UPDATE OF salary, job_id ON employees
FOR EACH ROW
WHEN (NEW.job_id <> 'SH_CLERK')
CALL check_salary(:NEW.job_id, :NEW.salary)
/

Business Aplication Scenarios For Implementing Triggers

Dengan adanya trigger kita dapat menggunakannya untuk :
  • Security
    Dengan adanya trigger kita dapat membatasi siapa saja yang dapat mengakses object dalam database sesuai dengan nilai yang telah dideklarasikan oleh trigger tersebut.
  • Auditing
    Dengan adanya trigger kita dapat melacak aliran data yang terjadi di dalam database
  • Data integrity
    Trigger dapat menjaga integritas data
  • Referential integrity
    Ketika Oracle Server hanya dapat membuat standard referential integrity rules, Trigger dapat mengimplementasikan nonstandard functionality
Table replication
Trigger dapat menyalin Table ke dalam bentuk replika
  • Computing derived data automatically
    Triggers compute derived data values automatically
  • Event logging
    Trigger dapat membuat hisrory logging secara transparant

Tidak ada komentar:

Posting Komentar