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
7
A
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.
7
Các hàng đó đang được insertes có sẵn như là NEW
trong cò
Kiểm tra hướng dẫn để biết thêm chi tiết.
http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/create_trigger.htm#BABEBAAB
http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/triggers.htm#LNPLS99955
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
@ 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. –
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