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
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 kèo bóng đá pháp các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

39.6. Thủ tục kèo bóng đá pháp PL/TCL

Quy trình kích kèo bóng đá pháp có thể được viết bằng PL/TCL.PostgreSQLyêu cầu một quy trình được gọi là một kích kèo bóng đá pháp phải được khai báo là một hàm không có Đối số và loại trả về củaTrigger.

Thông tin từ Trình quản lý kích kèo bóng đá pháp được chuyển cho Cơ quan thủ tục trong các biến sau:

$ tg_name

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

$ tg_relid

ID đối tượng của bảng gây ra kích kèo bóng đá pháp thủ tục được gọi.

$ tg_table_name

Tên của bảng gây ra quy trình kích kèo bóng đá pháp được gọi.

$ tg_table_schema

lược đồ của bảng gây ra kích kèo bóng đá pháp thủ tục đượ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 yếu tố danh sách trống. Vì vậy, tìm kiếm một tên cột kèo bóng đá pháp danh sách vớiTCL'sLsearchLệnh trả về phần tử của phần tử Số bắt đầu bằng 1 cho cột đầu tiên, theo cùng một cách Các cột được đánh số theo sốPostgreSQL. (Các yếu tố danh sách trống cũng xuất hiện ở vị trí của các cột đã bị rơi, để việc đánh số thuộc tính là chính xác cho các cột quyền của họ.)

$ tg_when

chuỗitrướchoặcsauTùy thuộc vào loại kích kèo bóng đá pháp gọi.

$ tg_level

chuỗihànghoặccâu lệnhTùy thuộc vào loại kích kèo bóng đá pháp gọi.

$ tg_op

ChuỗiChèn, Cập nhậthoặcXóaTùy thuộc vào loại cuộc gọi kích kèo bóng đá pháp.

$ new

Một mảng kết hợp chứa các giá trị của cái mới Hàng bảng 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 kèo bóng đá pháp mảng.

$ cũ

Một mảng kết hợp chứa các giá trị của cái cũ Hàng bảng 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 kèo bóng đá pháp mảng.

$ args

Một danh sách TCL của các đối số cho quy trình như được đưa ra kèo bóng đá pháp TheTạo TriggerTuyên bố. Những đối số này cũng có thể truy cập được là$ 1...$nkèo bóng đá pháp cơ thể thủ tục.

Giá trị trả về từ quy trình kích kèo bóng đá pháp có thể là một trong những chuỗiOKhoặcBỏ quahoặc một danh sách được trả về bởimảng getLệnh TCL. Nếu giá trị trả về làOK, kèo bóng đá pháp động (Chèn/Cập nhật/Xóa) đã bắn kích kèo bóng đá pháp sẽ tiến hành thông thường.Bỏ quaNói với trình quản lý kích kèo bóng đá pháp Để âm thầm đàn áp kèo bóng đá pháp động cho hàng này. Nếu một danh sách là Trả về, nó bảo PL/TCL trả lại một hàng sửa đổi cho trình kích kèo bóng đá pháp Trình quản lý sẽ được chèn thay vì cái được đưa ra trong$ new. (Điều này kèo bóng đá pháp động choChènCập nhậtchỉ.) Không cần phải nói rằng tất cả điều này chỉ có ý nghĩa khi kích kèo bóng đá pháp làtrướccho Mỗi hàng; nếu không thì giá trị trả về bị bỏ qua.

Đây là một ví dụ nhỏ quy trình kích kèo bóng đá pháp 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 bản cập nhật kèo bóng đá pháp động.

Tạo chức năng 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
    Đối với mỗi hàng thực thi quy trình TrigFunc_ModCount ('modcnt');

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