Cách vô hiệu hóa Trình kích hoạt trong Oracle

Cach Vo Hieu Hoa Trinh Kich Hoat Trong Oracle



Trình kích hoạt cơ sở dữ liệu hoặc gọi tắt là trình kích hoạt đề cập đến các thủ tục được lưu trữ được thực thi như một phản hồi cho một hoạt động sự kiện trong một đối tượng cơ sở dữ liệu nhất định.

Điều này khác với các thủ tục được lưu trữ tiêu chuẩn, yêu cầu yêu cầu rõ ràng từ người dùng. Vì trình kích hoạt được tự động hóa nên chúng được kích hoạt hoặc kích hoạt khi sự kiện đã chỉ định xảy ra, bất kể trạng thái máy chủ hoặc người dùng được kết nối.







Hầu hết các cơ sở dữ liệu quan hệ đều hỗ trợ sử dụng trình kích hoạt để thực hiện các tác vụ tự động như ngăn chặn giao dịch không hợp lệ, ghi nhật ký sự kiện, tìm nạp và ghi lại số liệu thống kê truy cập bảng, v.v.



Sau khi trình kích hoạt được tạo, trình kích hoạt luôn chạy bất cứ khi nào sự kiện liên quan xảy ra. Tuy nhiên, bạn có thể muốn ngăn chặn tạm thời hoặc vĩnh viễn trình kích hoạt thực thi. Đây là lúc tính năng vô hiệu hóa trình kích hoạt phát huy tác dụng.



Bài đăng này sẽ thảo luận về các bước nhanh chóng và dễ dàng để vô hiệu hóa trình kích hoạt trong cơ sở dữ liệu Oracle. Nếu bạn chưa quen với trình kích hoạt Oracle và muốn biết cách tạo một trình kích hoạt, hãy kiểm tra liên kết sau:





https://linuxhint.com/oracle-create-trigger

Tạo Trình kích hoạt thử nghiệm

Trước khi thảo luận về các phương pháp vô hiệu hóa trình kích hoạt, chúng ta hãy thiết lập một trình kích hoạt mẫu cho mục đích trình diễn.



GHI CHÚ : Phần này không đề cập đến cách xác định hoặc sử dụng trình kích hoạt cơ sở dữ liệu.

Chúng tôi muốn tạo trình kích hoạt ghi nhật ký hoạt động của người dùng sau thao tác xóa. Ví dụ: giả sử chúng ta có bảng sample_data với thông tin như sau:

Trước tiên, chúng tôi cần tạo một bảng nơi chúng tôi lưu trữ nhật ký cho mọi hoạt động xóa.

Lược đồ bảng như sau:

tạo bảng sample_data_logs(
số ID,
first_name varchar2(50),
ip_address varchar2(20),
btc_address varchar2(50),
thẻ tín dụng varchar2(50),
định danh varchar2(40),
ngày xóa_date,
đã xóa_bởi varchar2(20)
);

Tiếp theo, chúng ta cần xác định trình kích hoạt được thực thi sau sự kiện xóa. Định nghĩa kích hoạt được cung cấp như sau:

tạo hoặc thay thế trình kích hoạt log_user
sau khi xóa
trên sample_data
Cho mỗi hàng
tuyên bố
action_username varchar2(20);
bắt đầu
chọn người dùng vào action_username từ kép;
chèn vào sample_data_logs
giá trị (:OLD.id,
:OLD.first_name,
:OLD.ip_address,
:OLD.btc_address,
:OLD.credit_card,
:OLD.mã định danh,
hệ thống,
tên_người_dùng_hành_động);
chấm dứt;

Để kiểm tra trình kích hoạt, chúng ta hãy thực hiện thao tác xóa khỏi bảng sample_data như được hiển thị:

xóa khỏi sample_data trong đó id = 1;

Cuối cùng, chúng ta có thể kiểm tra bảng nhật ký để đảm bảo rằng thao tác xóa đã được ghi lại:

chọn * từ sample_data_logs;

Đầu ra:

Như chúng ta có thể thấy, bảng có một mục nhập dữ liệu trước đó trước khi xóa, cũng như tên người dùng đã thực hiện hoạt động xóa và thời gian xóa.

Trong các phần sau, chúng tôi sẽ trình bày cách tắt trình kích hoạt trước đó. Trước khi làm như vậy, hãy đảm bảo rằng trình kích hoạt mục tiêu của bạn đang hoạt động và bạn có đủ quyền để bật hoặc tắt trình kích hoạt đó.

Vô hiệu hóa Trình kích hoạt bằng PL/SQL

Phương pháp đầu tiên và đơn giản nhất để vô hiệu hóa trình kích hoạt là sử dụng câu lệnh SQL. May mắn thay, Oracle cung cấp cho chúng ta câu lệnh ALTER TRIGGER có cú pháp như sau:

THAY ĐỔI TRIGGER trigger_name TẮT;

Ví dụ: để tắt trình kích hoạt log_user mà chúng tôi đã tạo trước đó, chúng tôi có thể chạy như sau:

thay đổi kích hoạt vô hiệu hóa log_user;

Sau khi thực thi, trình kích hoạt sẽ không còn giữ bản sao của dữ liệu cũ và  người dùng đã thực hiện thao tác xóa như minh họa trong phần sau:

xóa khỏi sample_data trong đó id = 2;

Kiểm tra nhật ký:

chọn * từ sample_data_logs;

Đầu ra:

Như chúng ta có thể thấy, chúng ta vẫn chỉ có một bản ghi.

Vô hiệu hóa Trình kích hoạt bằng SQL Developer

Chúng ta có thể sử dụng tiện ích SQL Developer để tắt trình kích hoạt trong giao diện đồ họa. Bắt đầu bằng cách đăng nhập vào Nhà phát triển SQL.

Điều hướng đến phần “Kích hoạt”:

Mở rộng thư mục trình kích hoạt và tìm trình kích hoạt mà bạn muốn tắt. Nhấp chuột phải vào tên trình kích hoạt và chọn “Tắt”.

Xác nhận thao tác “Tắt” và nhấp vào “Áp dụng”.

Sau khi bị vô hiệu hóa, Oracle sẽ làm mờ trình kích hoạt, cho biết rằng nó không hoạt động.

Phần kết luận

Bài viết này khám phá cách vô hiệu hóa trình kích hoạt Oracle bằng cách sử dụng các câu lệnh PL/SQL và tiện ích SQL Developer.