Phiên bản không được hỗ trợ:7.3 / 7.2 / 7.1
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

21.2. Tương tác với trình kích soi kèo bóng đá truoctran Giám đốc

Phần này mô tả các chi tiết cấp thấp của giao diện đến một hàm kích soi kèo bóng đá truoctran. Thông tin này chỉ cần thiết khi Viết chức năng kích soi kèo bóng đá truoctran trong C. Nếu bạn đang sử dụng cấp cao hơn Ngôn ngữ chức năng sau đó các chi tiết này được xử lý cho bạn.

Lưu ý:Giao diện được mô tả ở đây áp dụng choPostgres7.1 trở lên. Các phiên bản trước đó đã vượt qua con trỏ TriggerData trong toàn cầu Biến hiện tạiTriggerData.

Khi một hàm được gọi bởi trình quản lý kích soi kèo bóng đá truoctran, nó không phải là đã vượt qua bất kỳ tham số thông thường nào, nhưng nó được thông qua một "bối cảnh" Con trỏ trỏ đến một cấu trúc TriggerData. C chức năng có thể kiểm tra xem họ có được gọi từ Trình quản lý kích soi kèo bóng đá truoctran hay không bằng cách thực hiện macrođược gọi là_as_trigger (fcinfo), mở rộng sang

((fcinfo)- bối cảnh! = Null && isa ((fcinfo)- bối cảnh, soi kèo bóng đá truoctran tạo
Nếu điều này trả về đúng, thì việc đúc là an toàn fcinfo- bối cảnh để gõTriggerData *7070_7145khôngThay đổi cấu trúc TriggerData hoặc bất kỳ dữ liệu nào nó trỏ đến.

struct TriggerData được xác định trong src/bao gồm/lệnh/kích soi kèo bóng đá truoctranh:

Typedef Struct TriggerData

    Loại gật đầu;
    TriggerEvent tg_event;
    Quan hệ tg_relation;
    Nặng TG_Trigtuple;
    Nặng nề tg_newtuple;
    Kích soi kèo bóng đá truoctran *tg_trigger;
 TriggerData;
trong đó các thành viên được xác định như sau:
loại

luôn luônT_TriggerDataNếu đây là một sự kiện kích soi kèo bóng đá truoctran.

TG_Event

Mô tả sự kiện mà hàm được gọi. Bạn có thể sử dụng các macro sau để kiểm traTG_EVENT:

Trigger_fired_before (TG_Event)

Trả về đúng nếu kích soi kèo bóng đá truoctran được bắn trước đó.

Trigger_fired_after (TG_Event)

Trả về đúng nếu kích soi kèo bóng đá truoctran sau.

Trigger_fired_for_row (sự kiện)

Trả về đúng nếu kích soi kèo bóng đá truoctran được bắn cho một cấp độ hàng sự kiện.

Trigger_fired_for_statement (sự kiện)

Trả về đúng nếu kích soi kèo bóng đá truoctran được bắn cho cấp độ tuyên bố sự kiện.

Trigger_fired_by_insert (sự kiện)

Trả về đúng nếu kích soi kèo bóng đá truoctran được bắn bằng cách chèn.

Trigger_fired_by_delete (sự kiện)

Trả về đúng nếu kích soi kèo bóng đá truoctran được bắn bằng cách xóa.

Trigger_fired_by_update (sự kiện)

Trả về đúng nếu kích soi kèo bóng đá truoctran được kích soi kèo bóng đá truoctran bởi bản cập nhật.

TG_Relation

là một con trỏ tới cấu trúc mô tả kích soi kèo bóng đá truoctran mối quan hệ. Nhìn vào SRC/bao gồm/Utils/Rel.h để biết chi tiết về Cấu trúc này. Những điều quan tâm nhất là TG_RELATION- RD_ATT (Bộ mô tả về các bộ dữ liệu quan hệ) và tg_relation- rd_rel- relname (tên quan hệ. Đây không phải là char*, nhưng được đặt tên là. Sử dụng Spi_getrelname (tg_relation) để nhận char* nếu bạn cần một bản sao tên).

tg_trigtuple

là một con trỏ tới tuple mà bộ kích soi kèo bóng đá truoctran là sa thải. Đây là bộ tuple được chèn (nếu chèn), đã xóa (nếu xóa) hoặc cập nhật (nếu cập nhật). Nếu như Chèn/xóa thì đây là những gì bạn sẽ trở lại Người thực thi nếu bạn không muốn thay thế tuple bằng người khác một (chèn) hoặc bỏ qua thao tác.

tg_newtuple

là một con trỏ đến phiên bản mới của tuple nếu cập nhật và Null nếu đây là cho một chèn hoặc xóa. Đây là những gì bạn sẽ trở lại để thực thi nếu cập nhật và bạn không muốn thay thế bộ tuple này bằng một cái khác hoặc bỏ qua soi kèo bóng đá truoctran động.

tg_trigger

là con trỏ tới cấu trúc kích soi kèo bóng đá truoctran được xác định trong src/bao gồm/utils/rel.h:

Typedef Struct Trigger

    Oid tgoid;
    char *tgname;
    Oid tgfoid;
    Fmgrinfo tgfunc;
    int16 tgtype;
    bool tgenables;
    Bool Tgisconstraint;
    bool tgdeferable;
    bool tginitdeferred;
    int16 tgnargs;
    int16 tgattr [func_max_args];
    char ** tgargs;
 Cò súng;
Trong đó tgname là tên của bộ kích soi kèo bóng đá truoctran, TGNARGS là số lượng lập luận trong TGGGS, TGGGS là một loạt các gợi ý cho Đối số được chỉ định trong câu lệnh Creating Trigger. Các thành viên khác chỉ dành cho sử dụng nội bộ.