Phiên bản được hỗ trợ:hiện tại(17)16 / 15 / 14 / 13
Phiên bản phát triển: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 đá euro phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

36.3. Viết các chức năng kích kèo bóng đá euro trong C

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 đá euro. 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 đá euro 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.

Các chức năng kích kèo bóng đá euro phải sử dụng"Phiên bản 1"Giao diện Trình quản lý chức năng.

Khi một hàm được gọi bởi Trình quản lý kích kèo bóng đá euro, nó không được thông qua bất kỳ đối số bình thường nào, nhưng nó được thông qua"Bối cảnh"Con 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 đá euro hay không bằng cách thực thi macro:

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

Mở rộng sang:

((fcinfo)- bối cảnh! = Null && isa ((fcinfo)- bối cảnh, trình tạo

Nếu điều này trả về đúng, thì việc đúc là an toànfcinfo- bối cảnhđể loạiTriggerData *và sử dụng kèo bóng đá euro đ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 trongLệnh/Trigger.h:

typedef struct TriggerData

trong đó kèo bóng đá euro 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. Bạn có thể sử dụng kèo bóng đá euro macro sau để kiểm traTG_Event:

Trigger_fired_before (tg_event)

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

Trigger_fired_after (TG_Event)

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

Trigger_fired_instead (TG_Event)

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

Trigger_fired_for_row (tg_event)

Trả về đúng nếu kích kèo bóng đá euro được kích kèo bóng đá euro 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 đá euro được kích kèo bóng đá euro cho một sự kiện cấp câu.

Trigger_fired_by_insert (tg_event)

Trả về đúng nếu kích kèo bóng đá euro đượ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 đá euro đượ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 đá euro được bắn bởi AXóalệnh.

Trigger_fired_by_truncate (TG_EVENT)

Trả về đúng nếu kích kèo bóng đá euro được bắn bởicắ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 đá euro đã 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 đá euro 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 đá euro đã được bắn. Đây là hàng được chèn, cập nhật hoặc xóa.Chè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 (trong trường hợpChèn) hoặc bỏ qua kèo bóng đá euro động. Đối với các trình kích kèo bóng đá euro 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 đá euro được kích kèo bóng đá euro 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ừ chức 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 đá euro 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 trongUtils/Reltrigger.h:

Typedef Struct Trigger

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

TG_TRIGTUPEBUF

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ữ trong 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ữ trong bộ đệm đĩa.

Hàm kích kèo bóng đá euro phải trả về ACon trỏ hoặc AnullCon trỏ (khôngMột giá trị null SQL, nghĩa là, không đặtisnullĐú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.