Sabtu, 07 Januari 2012

Resume PBD 2 Pert 14


 Trigger

Menciptakan Triggers
Jenis Triggers

Triggers:
• A
dalah blok PL / SQL atau prosedur PL / SQL yang berhubungan dengan tabel, view, skema, atau database
• Melaksanakan secara implisit setiap kali acara tertentu terjadi
• Bisa berupa:
-
Application trigger: Dipanggil setiap kali suatu peristiwa terjadi dengan aplikasi tertentu
- Database
trigger: Dipanggil setiap kali data event (seperti DML) atau system event (seperti logon atau shutdown) terjadi pada sebuah skema atau database

Pedoman untuk Merancang Triggers

• Desain Triggers untuk:
- Melakukan tindakan yang terkait
- Memusatkan operasi global
• Jangan desain Triggers:
- Dimana fungsi sudah dibangun ke server Oracle
- duplikat Triggers lainnya
• Membuat prosedur yang tersimpan dan memanggil mereka dalam Triggers, jika kode PL / SQL sangat panjang.
• Penggunaan yang berlebihan Triggers dapat mengakibatkan saling ketergantungan yang kompleks, yang mungkin sulit untuk mempertahankan dalam aplikasi besar
.

Membuat DML Trigger

Sebuah pernyataan Triggers berisi:
• Triggers waktu
- Untuk tabel:
BEFORE, AFTER
- Untuk
view: INSTEAD OF
• Triggers
event: INSERT, UPDATE, atau DELETE
• Nama Tabel:
On table, view
• Jenis Triggers: Baris atau pernyataan
• klausa
WHEN: Membatasi kondisi
• Triggers
body: blok PL / SQL

Komponen DML Trigger

Triggers waktu: Kapan seharusnya Triggers dipanggil?

BEFORE: Jalankan trigger body sebelum event Triggers DML pada tabel.
AFTER: Jalankan trigger body setelah peristiwa Triggers DML pada tabel.
INSTEAD OF: Jalankan trigger body instead of pernyataan Triggers. Ini digunakan untuk views yang tidak dinyatakan dimodifikasi.

Triggers event pengguna: Manakah pernyataan DML menyebabkan Triggers untuk mengeksekusi? Anda dapat menggunakan salah satu dari berikut:
• INSERT
• UPDATE
• DELETE

Trigger type: Haruskah trigger body mengeksekusi untuk setiap baris pernyataan yang mempengaruhi atau hanya sekali?
Statement: The trigger body mengeksekusi sekali untuk the triggering event. Ini adalah default. Sebuah pernyataan trigger dipanggil sekali, bahkan jika tidak ada baris yang terpengaruh sama sekali..
Row: The trigger body dijalankan sekali untuk setiap baris terpengaruh oleh triggering event. Sebuah row trigger tidak dijalankan jika tidak ada peristiwa triggering event yang mempengaruhi baris .

Trigger body: Tindakan apa yang harus Triggers lakukan?
The trigger body blok PL / SQL atau panggilan ke prosedur.

Syntax untuk membuat DML Statemen Triggers

Syntax:

CREATE [OR REPLACE] TRIGGER trigger_name
timing
event1 [OR event2 OR event3]
ON table_name
trigger_body
Catatan: nama Triggers harus unik sehubungan dengan Triggers lain dalam skema yang sama.

Membuat DML Statement Trigger

CREATE OR REPLACE TRIGGER secure_emp
BEFORE INSERT ON employees
BEGIN
IF (TO_CHAR(SYSDATE,'DY') IN ('SAT','SUN')) OR
(TO_CHAR(SYSDATE,'HH24:MI')
NOT BETWEEN '08:00' AND '18:00')
THEN RAISE_APPLICATION_ERROR (-20500,'You may
insert into EMPLOYEES table only
during business hours.');
END IF;
END;
Membuat DML Row 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)]
trigger_body

CREATE OR REPLACE TRIGGER restrict_salary
BEFORE INSERT OR UPDATE OF salary ON employees
FOR EACH ROW
BEGIN
IF NOT (:NEW.job_id IN ('AD_PRES', 'AD_VP'))
AND :NEW.salary > 15000
THEN
RAISE_APPLICATION_ERROR (-20202,'Employee
cannot earn this amount');
END IF;
END;
/
Syntax hapus Trigger

Untuk menghapus trigger dari database, gunakan syntax DROP TRIGGER:

DROP TRIGGER trigger_name;

Contoh:

DROP TRIGGER secure_emp;

Catatan: Semua Triggers pada tabel dihapus ketika tabel dihapus.

Tidak ada komentar:

Posting Komentar