2012-01-11 36 views
7

Rất mới đối với trình kích hoạt của Oracle. Giả sử tôi có một kích hoạt trên một chèn trong emp bảng. Có cách nào để tìm ra hồ sơ được chèn vào đã kích hoạt cò súng. Tôi muốn kích hoạt để có mã mà làm điều gì đó nếu hồ sơ chèn vào là một giá trị cụ thể.Nhận giá trị kích hoạt trình kích hoạt Oracle

Trả lời

10

Giả sử bạn có một kích hoạt row-level, bạn chỉ có thể sử dụng :NEW giả kỷ lục

CREATE TRIGGER name_of_trigger 
    BEFORE INSERT ON emp 
    FOR EACH ROW 
DECLARE 
    <<declare variables>> 
BEGIN 
    IF(:new.ename = 'JUSTIN') 
    THEN 
    <<do something if the newly inserted ENAME value is 'JUSTIN'>> 
    END IF; 
END; 

Đối với một kích hoạt DDL, cách tiếp cận hoàn toàn khác nhau. Trong trường hợp đó, các pseudofunctions ora_dict_obj_owner và ora_dict_obj_name sẽ trả về chủ sở hữu và tên của bảng mà câu lệnh DDL đang hoạt động.

+0

Hey @Justin Cave xin lỗi vì đã làm phiền bạn nhưng tôi nhận ra rằng tôi thực sự cần một trình kích hoạt DDL hoặc SYstem chứ không phải kích hoạt DML. Tôi sẽ gọi một trigger mỗi khi một bảng mới được tạo ra trong lược đồ 'CREATE OR REPLACE TRIGGER drop_trigger SAU KHI TẠO ON hr.SCHEMA BEGIN END;' Làm thế nào tôi sẽ nhận được tên của bảng được tạo ra mà kích hoạt trigger bây giờ? Nó vẫn còn MỚI? – Eosphorus

+0

@ Photpho - Không, DDL gây nên những động vật rất khác nhau. Đã cập nhật câu trả lời của tôi. –

+0

cảm ơn rất nhiều Justin. Đây là một vài lần bạn đã giúp tôi bây giờ. Tôi rất trân trọng điều này :) – Eosphorus

Các vấn đề liên quan