Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
4722_483318 / 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 kèo bóng đá hom nay này dành cho phiên bản không được hỗ trợ của PostgreSQL.
9588_9644hiệ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ế.

39.9. Quy trình kích kèo bóng đá hom nay

PL/PGSQLcó thể được sử dụng để Xác định quy trình kích kèo bóng đá hom nay. Một quy trình kích kèo bóng đá hom nay được tạo bằng TheTạ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 tuyên bố không có tranh luận ngay cả khi nó dự kiến ​​sẽ nhận được Đối số được chỉ định trongTạo Trigger- Đối số kích kèo bóng đá hom nay được truyền quaTG_ARGV, như được mô tả bên dưới.

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

mới

Kiểu dữ kèo bóng đá hom nayRecord; giữ biến Hàng cơ sở dữ kèo bóng đá hom nay mới choChèn/Cập nhậtkèo bóng đá hom nay động trong các kích kèo bóng đá hom nay cấp độ hàng. Biến này lànullTrong các kích kèo bóng đá hom nay cấp độ tuyên bố và choXóakèo bóng đá hom nay động.

Kiểu dữ kèo bóng đá hom nayRecord; giữ biến Hàng cơ sở dữ kèo bóng đá hom nay cũ choCập nhật/Xóakèo bóng đá hom nay động trong các kích kèo bóng đá hom nay cấp độ hàng. Biến này lànullTrong các kích kèo bóng đá hom nay cấp độ tuyên bố và choChènkèo bóng đá hom nay động.

TG_NAME

Loại dữ kèo bóng đá hom naytên; biến mà chứa tên của bộ kích kèo bóng đá hom nay thực sự bị bắn.

tg_when

Kiểu dữ kèo bóng đá hom nayText; một chuỗitrước, sauhoặcThay vào đó CỦA, Tùy thuộc vào định nghĩa của bộ kích kèo bóng đá hom nay.

TG_LEVEL

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

TG_OP

Loại dữ kèo bóng đá hom nayText; một chuỗiChèn, Cập nhật, Xóahoặccắt ngắn13627_13688

TG_RELID

Kiểu dữ kèo bóng đá hom nayOID; ID đối tượng của bảng gây ra lời mời kích kèo bóng đá hom nay.

TG_RELNAME

Kiểu dữ kèo bóng đá hom naytên; tên của Bảng gây ra lời cầu xin kích kèo bóng đá hom nay. Đây là bây giờ Khấu hao, và có thể biến mất trong một bản phát hành trong tương lai. Sử dụngTG_TABLE_NAMEThay vào đó.

TG_TABLE_NAME

Kiểu dữ kèo bóng đá hom naytên; tên của bảng gây ra lời mời kích kèo bóng đá hom nay.

tg_table_schema

Kiểu dữ kèo bóng đá hom naytên; tên của Lược đồ của bảng gây ra lời mời kích kèo bóng đá hom nay.

TG_NARGS

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

TG_ARGV []

Mảng kiểu dữ kèo bóng đá hom nay 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ệ (ít hơn hơn 0 hoặc lớn hơn hoặc bằngTG_NARGS) dẫn đến giá trị null.

Một chức năng kích kèo bóng đá hom nay 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 Trình kích kèo bóng đá hom nay đã được bắn cho.

Trình kích kèo bóng đá hom nay cấp hàng đã bắn15528_15536Có thể trả về null để báo hiệu Trình quản lý kích kèo bóng đá hom nay để bỏ qua phần còn lại của kèo bóng đá hom nay động cho hàng này (tức là, các kích kèo bóng đá hom nay tiếp theo không được bắn, vàChè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 đá hom nay động tiến hành với giá trị hàng đó. Trả lại giá trị hàng khác với giá trị ban đầu củamớiThay đổi hàng sẽ được chèn hoặc cập nhật. Vì vậy, nếu Chức năng kích kèo bóng đá hom nay muốn hành động kích kèo bóng đá hom nay thành công bình thường mà không thay đổi giá trị hàng,mới(hoặc Một giá trị bằng nhau) phải được trả lại. Để thay đổi hàng Đã lưu trữ, có thể thay thế các giá trị đơn trực tiếp trongmớivà 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 đá hom nay trênXóa, Giá trị trả về không có hiệu lực trực tiếp, Nhưng nó phải là không phải để cho phép hành động kích kèo bóng đá hom nay được tiến hành. Lưu ý rằngmớilà null trongXóaTriggers, vì vậy việc trả lại thường không hợp lý. Thành ngữ thông thường trongXóaTriggers trở lại.

thay vìTriggers (luôn luôn Trình kích kèo bóng đá hom nay cấp độ hàng và chỉ có thể được sử dụng trên các lượt xem) có thể trả về null để báo hiệu rằng họ đã không thực hiện bất kỳ bản cập nhật nào và Phần còn lại của kèo bóng đá hom nay động cho hàng này nên được bỏ qua (tức là, Các kích kèo bóng đá hom nay tiếp theo không được bắn và hàng không được tính vào trạng thái bị ảnh hưởng bởi hàng cho xung quanhChèn/Cập nhật/Xóa). Nếu không thì một giá trị không phải là trả lại, để báo hiệu rằng bộ kích kèo bóng đá hom nay đã thực hiện kèo bóng đá hom nay động. VìChènCập nhậtkèo bóng đá hom nay động, giá trị trả về phải làmới, mà hàm kích kèo bóng đá hom nay có thể Sửa đổi thành 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ỳ kích kèo bóng đá hom nay tiếp theo). VìXóakèo bóng đá hom nay động, giá trị trả về phải là.

Giá trị trả về của kích kèo bóng đá hom nay cấp hàng được bắnsauhoặc kích kèo bóng đá hom nay cấp độ tuyên bốTrướchoặcsauluôn bị bỏ qua; Nó cũng có thể là NULL. Tuy nhiên, bất kỳ Những loại kích kèo bóng đá hom nay này vẫn có thể phá thai toàn bộ kèo bóng đá hom nay động bằng cách Tăng lỗi.

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

Ví dụ 39-3. MỘT18644_18654Quy trình kích kèo bóng đá hom nay

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

18969_19902

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

Ví dụ 39-4. MỘTPL/PGSQLQuy trình kích kèo bóng đá hom nay cho Kiểm toán

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

20908_22114

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 nhập cuối cùng sửa đổi. Cách tiếp cận này vẫn ghi lại dấu vết kiểm toán đầy đủ của các thay đổi trong bảng, nhưng cũng kèo bóng đá hom nay bày một cái nhìn đơn giản hóa Đường mòn kiểm toán, chỉ hiển thị dấu thời gian sửa đổi cuối cùng có nguồn gốc Từ đường kiểm toán cho mỗi mục.Ví dụ 39-5Hiển thị ví dụ về kích kèo bóng đá hom nay kiểm toán trên chế độ xem trongPL/PGSQL.

Ví dụ 39-5. MỘTPL/PGSQLXem quy trình kích kèo bóng đá hom nay cho Kiểm toán

Ví dụ này sử dụng trình kích kèo bóng đá hom nay trên chế độ xem để làm cho nó có thể cập nhật và đảm bảo rằng mọi chèn, cập nhật hoặc xóa Hàng trong chế độ xem được ghi lại (tức là đã được kiểm toán) trongEMP_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 đá hom nay độ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.

23351_25051

Một cách sử dụng các kích kèo bóng đá hom nay là duy trì bảng tóm tắt của người khác bàn. Tóm tắt kết quả có thể được sử dụng thay cho bản gốc Bảng cho các truy vấn nhất định - thường với thời gian chạy giảm rất nhiều. Kỹ thuật này thường được sử dụng trong kho dữ liệu, trong đó Các bảng dữ liệu đo hoặc quan sát (được gọi là bảng thực tế) có thể là cực kỳ lớn.Ví dụ 39-6Hiển thị ví dụ về quy trình kích kèo bóng đá hom nay trongPL/PGSQLduy trì bảng tóm tắt cho một bảng thực tế trong kho dữ kèo bóng đá hom nay.

Ví dụ 39-6. MỘTPL/PGSQLQuy trình kích kèo bóng đá hom nay để duy trì Một 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ừKho dữ kèo bóng đá hom nay Bộ công cụbởi Ralph Kimball.

26187_30762