Đây là một ví dụ rất đơn giản về hàm kèo bóng đá pháp được viết trong C. (Ví dụ về các trình kích hoạt được viết bằng ngôn ngữ thủ tục có thể được tìm thấy trong tài liệu của các ngôn ngữ thủ tục.)
hàmNODDL
làm tăng một ngoại lệ mỗi khi nó được gọi. Định nghĩa kèo bóng đá pháp liên quan đến chức năng vớiDDL_Command_Start
kèo bóng đá pháp. Hiệu ứng là tất cả các lệnh DDL (với các ngoại lệ được đề cập trongPhần 38.1) được ngăn chặn chạy.
Đây là mã nguồn của hàm kèo bóng đá pháp:
#include "Postgres.h" #include "lệnh/event_trigger.h" #include "fmgr.h" Pg_module_magic; Pg_function_info_v1 (NODDL); Mốc thời gian NODDL (pg_function_args) EventTriggerData *TrigData; if (! gọi_AS_EVENT_TRIGGER (fcinfo)) / * lỗi nội bộ * / ELOG (Lỗi, "không bị kích hoạt bởi Trình quản lý kèo bóng đá pháp"); TrigData = (EventTriggerData *) fcinfo- bối cảnh; ereport (lỗi, (errcode (errcode_insuffn đủ errmsg ("lệnh \"%s \ "bị từ chối", GetCommandTagName (TrigData- tag)))); Pg_return_null ();
Sau khi bạn đã biên dịch mã nguồn (xemPhần 36.10.5), khai báo chức năng và các kèo bóng đá pháp:
Tạo hàm NodDl () returns Event_Trigger Như ngôn ngữ 'gật đầu' c; Tạo sự kiện kèo bóng đá pháp NODDL trên ddl_command_start Thực thi chức năng NODDL ();
Bây giờ bạn có thể kiểm tra hoạt động của bộ kèo bóng đá pháp:
11153_11471
Trong tình huống này, để có thể chạy một số lệnh DDL khi bạn cần làm như vậy, bạn phải bỏ trình kèo bóng đá pháp hoặc vô hiệu hóa nó. Có thể thuận tiện để vô hiệu hóa kích hoạt trong thời gian giao dịch:
Bắt đầu; Thay đổi kèo bóng đá pháp NODDL vô hiệu hóa; Tạo bảng foo (id nối tiếp); Thay đổi kèo bóng đá pháp kích hoạt NODDL; LÀM;
(Nhớ lại rằng các lệnh DDL trên các kèo bóng đá pháp không bị ảnh hưởng bởi các kèo bóng đá pháp.)