Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
4840_495118 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4
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 kèo bóng đá c1 phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

10861_10904

Phần này mô tả các chi tiết cấp thấp của giao diện với hàm kích kèo bóng đá c1. Thông tin này chỉ cần thiết khi viết các chức năng kích kèo bóng đá c1 trong C. Nếu bạn đang sử dụng ngôn ngữ cấp cao hơn thì những chi tiết này sẽ được xử lý cho bạn. Trong hầu hết các trường hợp, bạn nên xem xét sử dụng một ngôn ngữ thủ tục trước khi viết trình kích kèo bóng đá c1 của mình trong C. Tài liệu của từng ngôn ngữ thủ tục giải thích cách viết trình kích kèo bóng đá c1 bằng ngôn ngữ đó.

11509_11542Phiên bản 1KhănGiao diện Trình quản lý kèo bóng đá c1 năng.

Khi một hàm được gọi bởi Trình quản lý kích kèo bóng đá c1, nó không được thông qua bất kỳ đối số bình thường nào, nhưng nó được thông quabối cảnhHồiCon trỏ trỏ đến ATriggerDataCấu trúc. Các chức năng C có thể kiểm tra xem chúng có được gọi từ Trình quản lý kích kèo bóng đá c1 hay không bằng cách thực thi macro:

được gọi là_as_trigger (fcinfo)

Mở rộng thành:

((fcinfo)- bối cảnh!

Nếu điều này trả về đúng, thì việc đúc là an toànfcinfo- bối cảnhđến loạiTriggerData *và sử dụng kèo bóng đá c1 điểm đếnTriggerDataCấu trúc. Hàm phảikhôngthay đổiTriggerDataCấu trúc hoặc bất kỳ dữ liệu nào mà nó trỏ đến.

struct TriggerDatađược xác định kèo bóng đá c1Lệnh/Trigger.h:

12761_13145

trong đó kèo bóng đá c1 thành viên được xác định như sau:

loại

luôn luônT_TriggerData.

​​TG_Event

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

Trigger_fired_before (tg_event)

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

Trigger_fired_after (TG_Event)

Trả về đúng nếu kích kèo bóng đá c1 được kích kèo bóng đá c1 sau khi kèo bóng đá c1 động.

Trigger_fired_instead (TG_Event)

Trả về đúng nếu kích kèo bóng đá c1 được kích kèo bóng đá c1 thay vì kèo bóng đá c1 động.

Trigger_fired_for_row (tg_event)

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

Trigger_fired_for_statement (TG_EVENT)

Trả về đúng nếu kích kèo bóng đá c1 được kích kèo bóng đá c1 cho một sự kiện cấp câu lệnh.

Trigger_fired_by_insert (tg_event)

Trả về đúng nếu kích kèo bóng đá c1 được bắn bởi mộtChènlệnh.

Trigger_fired_by_update (tg_event)

Trả về đúng nếu kích kèo bóng đá c1 được bắn bởi mộtCập nhậtlệnh.

Trigger_fired_by_delete (TG_EVENT)

Trả về đúng nếu kích kèo bóng đá c1 được bắn bởiXóalệnh.

Trigger_fired_by_truncate (TG_EVENT)

Trả về đúng nếu kích kèo bóng đá c1 được bắn bởi Acắt ngắnlệnh.

TG_RELATION

Một con trỏ tới một cấu trúc mô tả mối quan hệ mà kích kèo bóng đá c1 đã bắn cho. Nhìn vàoUtils/rel.hĐể biết chi tiết về cấu trúc này. Những điều thú vị nhất làtg_relation- rd_att(mô tả của kèo bóng đá c1 bộ dữ liệu quan hệ) vàtg_relation- rd_rel- relname(tên quan hệ; loại không phảichar*nhưngĐược đặt tên; sử dụngSPI_GetRelName (TG_Relation)để nhậnchar*Nếu bạn cần một bản sao của tên).

tg_trigtuple

Một con trỏ đến hàng mà kích kèo bóng đá c1 đã được bắn. Đây là hàng được chèn, cập nhật hoặc xóa. Nếu kích kèo bóng đá c1 này được bắn cho mộtChènhoặcXóaVậy thì đây là những gì bạn nên trả lại từ chức năng nếu bạn không muốn thay thế hàng bằng một hàng khác (kèo bóng đá c1 trường hợpChèn) hoặc bỏ qua kèo bóng đá c1 động. Đối với các trình kích kèo bóng đá c1 trên các bảng nước ngoài, các giá trị của các cột hệ thống ở đây không được xác định.

tg_newtuple

Một con trỏ tới phiên bản mới của hàng, nếu kích kèo bóng đá c1 được kích kèo bóng đá c1 cho mộtCập nhậtnullNếu nó dành choChènhoặc AXóa. Đây là những gì bạn phải trả lại từ kèo bóng đá c1 năng nếu sự kiện làCập nhậtVà bạn không muốn thay thế hàng này bằng một hoặc bỏ qua thao tác. Đối với các trình kích kèo bóng đá c1 trên các bảng nước ngoài, các giá trị của các cột hệ thống ở đây không được xác định.

tg_trigger

Một con trỏ tới một cấu trúc loạiTrigger, được xác định kèo bóng đá c1Utils/Reltrigger.h:

Typedef Struct Trigger

    Oid tgoid;
    char *tgname;
    Oid tgfoid;
    int16 tgtype;
    char tgenables;
    Bool TgisInalal;
    Oid tgconstrrelid;
    Oid tgconstrindid;
    Oid tgconstraint;
    bool tgdeferable;
    bool tginitdeferred;
    int16 tgnargs;
    int16 tgnattr;
    int16 *tgattr;
    char ** tgargs;
    char *tgqual;
    char *tgoldtable;
    char *tgnewtable;
 Cò súng;

WHEREtgnamelà tên của bộ kích kèo bóng đá c1,TGNARGSlà số lượng đối số kèo bóng đá c1TGARGSTGARGSlà một mảng kèo bóng đá c1 con trỏ cho kèo bóng đá c1 đối số được chỉ định trongTạo TriggerTuyên bố. kèo bóng đá c1 thành viên khác chỉ sử dụng nội bộ.

tg_trigtupleBuf

bộ đệm chứatg_trigtuplehoặckhông hợp lệNếu không có tuple như vậy hoặc nó không được lưu trữ kèo bóng đá c1 bộ đệm đĩa.

TG_NewtupleBuf

bộ đệm chứatg_newtuplehoặckhông hợp lệNếu không có tuple như vậy hoặc nó không được lưu trữ kèo bóng đá c1 bộ đệm đĩa.

tg_oldtable

Một con trỏ tới cấu trúc loạituplestorestate19895_19954tg_relationhoặc AnullCon trỏ nếu không cóBảng cũMối quan hệ chuyển tiếp.

TG_Newtable

Một con trỏ tới cấu trúc loạituplestorestatechứa số không hoặc nhiều hàng ở định dạng được chỉ định bởiTG_RELATIONhoặc AnullCon trỏ nếu không cóBảng mớiMối quan hệ chuyển tiếp.

Để cho phép kèo bóng đá c1 truy vấn được cấp qua SPI để tham chiếu kèo bóng đá c1 bảng chuyển tiếp, xemPostgreSQL: Tài tỷ lệ kèo.

Hàm kích kèo bóng đá c1 phải trả về ACon trỏ hoặc AnullCon trỏ (không21005_21047isnullĐúng). Hãy cẩn thận để trả lạitg_trigtuplehoặctg_newtuple, khi thích hợp, nếu bạn không muốn sửa đổi hàng đang được vận hành.