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 / 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ế.

40.9. Quy trình kích kèo bóng đá euro

40.9.1. Kích kèo bóng đá euro thay đổi dữ liệu

PL/PGSQLcó thể được sử dụng để xác định các quy trình kích kèo bóng đá euro. Một quy trình kích kèo bóng đá euro được tạo bằngTạo chức nănglệnh, khai báo nó là một hàm không có đối số và loại trả về củaTrigger. Lưu ý rằng chức năng phải được khai báo mà không có đối số ngay cả khi nó dự kiến ​​sẽ nhận được các đối số được chỉ định trongTạo Trigger- Đối số kích kèo bóng đá euro được truyền quaTG_ARGV, như được mô tả bên dưới.

​​Khi APL/PGSQLHàm được gọi là kích kèo bóng đá euro, một số biến đặc biệt được tạo tự động trong khối cấp cao nhất. Họ là:

new

Kiểu dữ liệuRecord; Biến giữ hàng cơ sở dữ liệu mới choChèn/Cập nhậtkèo bóng đá euro động trong các kích kèo bóng đá euro cấp độ hàng. Biến này không được chỉ định trong các kích kèo bóng đá euro cấp câu lệnh và choXóakèo bóng đá euro động.

Kiểu dữ liệuRecord; Biến giữ hàng cơ sở dữ liệu cũ choCập nhật/Xóakèo bóng đá euro động trong các kích kèo bóng đá euro cấp độ hàng. Biến này không được chỉ định trong các kích kèo bóng đá euro cấp câu lệnh và choChènkèo bóng đá euro động.

TG_NAME

Kiểu dữ liệutên; Biến chứa tên của bộ kích kèo bóng đá euro thực sự bị bắn.

tg_when

Kiểu dữ liệuText; một chuỗi12657_12665, sauhoặcthay vì, Tùy thuộc vào định nghĩa của bộ kích kèo bóng đá euro.

TG_Level

Kiểu dữ liệuText; một chuỗi củahànghoặccâu lệnhTùy thuộc vào định nghĩa của bộ kích kèo bóng đá euro.

TG_OP

Kiểu dữ liệuText; một chuỗiChèn, Cập nhật, Xóahoặccắt ngắnKể cho kèo bóng đá euro động nào đã kích kèo bóng đá euro.

TG_RELID

Kiểu dữ liệuOID; ID đối tượng của bảng gây ra lệnh gọi kích kèo bóng đá euro.

TG_RELNAME

Kiểu dữ liệutên; Tên của bảng gây ra lời mời kích kèo bóng đá euro.TG_TABLE_NAMEthay vào đó.

TG_TABLE_NAME

Kiểu dữ liệutên; Tên của bảng gây ra lời mời kích kèo bóng đá euro.

tg_table_schema

Kiểu dữ liệutên; Tên của lược đồ của bảng gây ra lời mời kích kèo bóng đá euro.

TG_NARGS

Kiểu dữ liệuSố nguyên; số lượng đối số được đưa ra cho quy trình kích kèo bóng đá euro trongTạo Triggercâu lệnh.

TG_ARGV []

Mảng kiểu dữ liệu củaText; Các đối số từTạo TriggerTuyên bố. Chỉ số được tính từ 0. Các chỉ mục không hợp lệ (nhỏ hơn 0 hoặc lớn hơn hoặc bằngTG_NARGS) dẫn đến giá trị null.

Một hàm kích kèo bóng đá euro phải trả vềnullhoặc giá trị bản ghi/hàng có chính xác cấu trúc của bảng, kích kèo bóng đá euro đã được kích kèo bóng đá euro.

Trình kích kèo bóng đá euro cấp hàng đã bắntrước14863_15009Chèn/Cập nhật/XóaKhông xảy ra cho hàng này). Nếu một giá trị nonnull được trả về thì kèo bóng đá euro động sẽ tiến hành giá trị hàng đó.mớiThay đổi hàng sẽ được chèn hoặc cập nhật. Do đó, nếu hàm kích kèo bóng đá euro muốn hành động kích kèo bóng đá euro thành công bình thường mà không làm thay đổi giá trị hàng,mới(hoặc một giá trị bằng nhau) phải được trả về. Để thay đổi hàng cần được lưu trữ, có thể thay thế các giá trị đơn trực tiếp trongnewvà trả về sửa đổimớihoặc để xây dựng một bản ghi/hàng mới hoàn chỉnh để trả lại. Trong trường hợp trước kích kèo bóng đá euro trênXóa, Giá trị trả về không có hiệu lực trực tiếp, nhưng nó phải không được cho phép hành động kích kèo bóng đá euro được tiến hành. Lưu ý rằngmớilà null trongXóaKích kèo bóng đá euro, vì vậy việc trả lại thường không hợp lý. Thành ngữ thông thường trongXóaTriggers sẽ trở lại.

thay vì16205_16534Chèn/Cập nhật/Xóa). Nếu không, một giá trị không phải sẽ được trả về, để báo hiệu rằng bộ kích kèo bóng đá euro đã thực hiện thao tác được yêu cầu.ChènCập nhậtkèo bóng đá euro động, giá trị trả về phải làmới, mà hàm kích kèo bóng đá euro có thể sửa đổi để hỗ trợChèn trả vềCập nhật trả về(Điều này cũng sẽ ảnh hưởng đến giá trị hàng được truyền cho bất kỳ trình kích kèo bóng đá euro nào sau đó hoặc được chuyển cho một đặc biệtLoại trừTài liệu tham khảo bí danh trong mộtChèncâu lệnh vớitrên xung đột do cập nhậtmệnh đề). VìXóakèo bóng đá euro động, giá trị trả về phải là.

Giá trị trả về của kích kèo bóng đá euro cấp hàng được bắnsauhoặc kích kèo bóng đá euro cấp độ tuyên bốtrướchoặcsauluôn bị bỏ qua; Nó cũng có thể là NULL.

Ví dụ 40-3Hiển thị một ví dụ về quy trình kích kèo bóng đá euro trongPL/PGSQL.

Ví dụ 40-3. MỘTPL/PGSQLQuy trình kích kèo bóng đá euro

Ví dụ này kích kèo bóng đá euro đảm bảo rằng bất cứ khi nào một hàng được chèn hoặc cập nhật trong bảng, tên người dùng và thời gian hiện tại được đóng dấu vào hàng. Và nó kiểm tra xem tên của một nhân viên được đưa ra và mức lương là một giá trị dương.

Tạo bảng EMP (

Một cách khác để nhật ký thay đổi vào bảng liên quan đến việc tạo một bảng mới giữ một hàng cho mỗi lần chèn, cập nhật hoặc xóa xảy ra. Cách tiếp cận này có thể được coi là kiểm toán thay đổi trên bảng.Ví dụ 40-4Hiển thị một ví dụ về quy trình kích kèo bóng đá euro kiểm toán trongPL/PGSQL.

Ví dụ 40-4. MỘTPL/PGSQLQuy trình kích kèo bóng đá euro để kiểm toán

Ví dụ này kích kèo bóng đá euro đảm bảo rằng mọi chèn, cập nhật hoặc xóa một hàng trongEMPBảng được ghi lại (tức là đã được kiểm toán) trongEMP_AUDITBảng. Tên người dùng và thời gian hiện tại được đóng dấu vào hàng, cùng với loại kèo bóng đá euro động được thực hiện trên đó.

Tạo bảng EMP (

Một biến thể của ví dụ trước sử dụng chế độ xem tham gia bảng chính vào bảng kiểm toán, để hiển thị khi mỗi mục được sửa đổi lần cuối. Cách tiếp cận này vẫn ghi lại sự thay đổi kiểm toán đầy đủ của bảng, nhưng cũng trình bày một cái nhìn đơn giản về dấu vết kiểm toán, chỉ hiển thị dấu thời gian được sửa đổi cuối cùng có nguồn gốc từ đường mòn kiểm toán cho mỗi mục.Ví dụ 40-5Hiển thị ví dụ về kích kèo bóng đá euro kiểm toán trên chế độ xem trongPL/PGSQL.

Ví dụ 40-5. MỘTPL/PGSQLXem quy trình kích kèo bóng đá euro để kiểm toán

22153_22318EMP_AUDITBảng. Thời gian hiện tại và tên người dùng được ghi lại, cùng với loại kèo bóng đá euro động được thực hiện và chế độ xem hiển thị thời gian sửa đổi cuối cùng của mỗi hàng.

Tạo bảng EMP (

Một cách sử dụng kích kèo bóng đá euro là duy trì bảng tóm tắt của bảng khác. Tóm tắt kết quả có thể được sử dụng thay cho bảng gốc cho các truy vấn nhất định - thường là với thời gian chạy giảm rất nhiều.Ví dụ 40-6Hiển thị một ví dụ về quy trình kích kèo bóng đá euro trongPL/PGSQLduy trì bảng tóm tắt cho bảng thực tế trong kho dữ liệu.

Ví dụ 40-6. MỘTPL/PGSQLQuy trình kích kèo bóng đá euro để duy trì bảng tóm tắt

lược đồ chi tiết ở đây một phần dựa trênCửa hàng tạp hóaVí dụ từBộ công cụ kho dữ liệubởi Ralph Kimball.

-

40.9.2. Trình kích kèo bóng đá euro trên các sự kiện

PL/PGSQLcó thể được sử dụng để xác định các kích kèo bóng đá euro sự kiện.PostgreSQLYêu cầu rằng một quy trình được gọi là kích kèo bóng đá euro sự kiện phải được khai báo là một hàm không có đối số và loại trả về củaevent_trigger.

Khi APL/PGSQLHàm được gọi là kích kèo bóng đá euro sự kiện, một số biến đặc biệt được tạo tự động trong khối cấp cao nhất. Họ là:

TG_EVENT

Kiểu dữ liệuText; Một chuỗi đại diện cho sự kiện Trình kích kèo bóng đá euro được kích kèo bóng đá euro.

TG_TAG

Kiểu dữ liệuText; Biến chứa thẻ lệnh mà kích kèo bóng đá euro được kích kèo bóng đá euro.

Ví dụ 40-7Hiển thị ví dụ về quy trình kích kèo bóng đá euro sự kiện trongPL/PGSQL.

Ví dụ 40-7. MỘTPL/PGSQLQuy trình kích kèo bóng đá euro sự kiện

Ví dụ này kích kèo bóng đá euro chỉ đơn giản là tăngThông báoThông báo mỗi khi lệnh được hỗ trợ được thực hiện.

Tạo hoặc thay thế hàm snitch () trả về event_trigger dưới dạng $$