Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / 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

44.6. Chức năng kích kèo bóng đá c1 trong PL/TCL

Các chức năng kích kèo bóng đá c1 có thể được viết bằng PL/TCL.PostgreSQL10598_10730Trigger.

Thông tin từ Trình quản lý kích kèo bóng đá c1 được chuyển đến thân hàm trong các biến sau:

$ tg_name

Tên của bộ kích kèo bóng đá c1 từTạo Triggercâu lệnh.

$ tg_relid

ID đối tượng của bảng gây ra chức năng kích kèo bóng đá c1 được gọi.

$ tg_table_name

Tên của bảng gây ra chức năng kích kèo bóng đá c1 được gọi.

$ tg_table_schema

lược đồ của bảng gây ra chức năng kích kèo bóng đá c1 được gọi.

$ tg_relatts

Danh sách TCL của tên cột bảng, được tiền tố với một phần tử danh sách trống. Vì vậy, tìm kiếm một tên cột kèo bóng đá c1 danh sách vớiTCL'sLsearchLệnh trả về số phần tử bắt đầu bằng 1 cho cột đầu tiên, giống như cách các cột được đánh số theo thườngPostgreSQL. .

$ tg_when

chuỗitrước, sau12556_12563thay vì, Tùy thuộc vào loại sự kiện kích kèo bóng đá c1.

$ tg_level

chuỗihànghoặccâu lệnhTùy thuộc vào loại sự kiện kích kèo bóng đá c1.

$ tg_op

chuỗiChèn, Cập nhật, Xóahoặccắt ngắnTùy thuộc vào loại sự kiện kích kèo bóng đá c1.

$ new

Một mảng kết hợp chứa các giá trị của hàng bảng mới choChènhoặcCập nhậthành động hoặc trống choXóa. Mảng được lập chỉ mục bằng tên cột. Các cột là NULL sẽ không xuất hiện trong mảng. Điều này không được đặt cho các kích kèo bóng đá c1 cấp câu lệnh.

$ cũ

Một mảng kết hợp chứa các giá trị của hàng bảng cũ choCập nhậthoặcXóahành động hoặc trống choChèn. Mảng được lập chỉ mục bằng tên cột. Các cột là NULL sẽ không xuất hiện trong mảng. Điều này không được đặt cho các kích kèo bóng đá c1 cấp câu lệnh.

$ args

Một danh sách TCL của các đối số cho hàm như được đưa ra kèo bóng đá c1Tạo TriggerTuyên bố. Những đối số này cũng có thể truy cập được là$ 1...$nkèo bóng đá c1 cơ thể chức năng.

Giá trị trả về từ hàm kích kèo bóng đá c1 có thể là một trong các chuỗiOKhoặcBỏ quahoặc danh sách các cặp tên/cặp giá trị cột. Nếu giá trị trả về làOK, kèo bóng đá c1 động (Chèn/Cập nhật/Xóa) bắn kích kèo bóng đá c1 sẽ tiến hành bình thường.Bỏ quaNói với trình quản lý kích kèo bóng đá c1 để âm thầm triệt tiêu kèo bóng đá c1 động cho hàng này. Nếu một danh sách được trả về, nó sẽ yêu cầu PL/TCL trả lại một hàng sửa đổi cho trình quản lý kích kèo bóng đá c1; Nội dung của hàng sửa đổi được chỉ định bởi các tên và giá trị cột trong danh sách. Bất kỳ cột không được đề cập trong danh sách được đặt thành NULL. Trả về một hàng sửa đổi chỉ có ý nghĩa đối với cấp độ hàngtrước ChènhoặcCập nhậtTriggers, kèo bóng đá c1 đó hàng sửa đổi sẽ được chèn thay vì hàng được đưa ra kèo bóng đá c1$ new; hoặc cho cấp độ hàngthay vì ChènhoặcCập nhậtTrình kích kèo bóng đá c1 trong đó hàng được trả về được sử dụng làm dữ liệu nguồn choChèn trả vềhoặcCập nhật trả vềmệnh đề. kèo bóng đá c1 cấp độ hàngtrước Xóahoặcthay vì XóaTrình kích kèo bóng đá c1, trả về một hàng sửa đổi có hiệu ứng tương tự như trả vềOK, đó là kèo bóng đá c1 động tiến hành. Giá trị trả về kích kèo bóng đá c1 bị bỏ qua cho tất cả các loại kích kèo bóng đá c1 khác.

tip

Danh sách kết quả có thể được thực hiện từ biểu diễn mảng của tuple sửa đổi vớimảng getLệnh TCL.

Đây là một ví dụ nhỏ chức năng kích kèo bóng đá c1 buộc giá trị số nguyên trong bảng để theo dõi số lượng cập nhật được thực hiện trên hàng. Đối với các hàng mới được chèn, giá trị được khởi tạo thành 0 và sau đó tăng lên trên mỗi thao tác cập nhật.

Tạo chức kèo bóng đá c1 TrigFunc_ModCount () Trả về Trigger dưới dạng $$
    chuyển đổi $ tg_op 
        CHÈN 
            Đặt mới ($ 1) 0

        CẬP NHẬT 
            Đặt mới ($ 1) $ Old ($ 1)
            tăng mới ($ 1)

        mặc định 
            trả lại ok

    trả lại [mảng nhận mới]
$$ Ngôn ngữ pltcl;

Tạo bảng mytab (số nguyên số, văn bản mô tả, số nguyên modcnt);

Tạo Trigger Trig_MyTab_ModCount trước khi chèn hoặc cập nhật trên MyTab
    Cho mỗi hàng thực thi chức kèo bóng đá c1 trigfunc_modcount ('modcnt');

Lưu ý rằng chính chức năng kích kèo bóng đá c1 không biết tên cột; Đó là cung cấp từ các đối số kích kèo bóng đá c1. Điều này cho phép chức năng kích kèo bóng đá c1 được sử dụng lại với các bảng khác nhau.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì kèo bóng đá c1 tài liệu không chính xác, không phù hợp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.