Postgresql Tài liệu 8.0.26 | ||||
---|---|---|---|---|
prev | Backward nhanh | Chuyển tiếp nhanh | Tiếp theo |
Chương này mô tả cách viết các chức năng kích kèo bóng đá pháp. Cò súng Các chức năng có thể được viết bằng C hoặc trong một số Ngôn ngữ thủ tục. Hiện tại không thể viết một Chức năng kích kèo bóng đá pháp ngôn ngữ SQL.
Một kích kèo bóng đá pháp có thể được xác định để thực thi trước hoặc sau mộtChèn, Cập nhậthoặcXóakèo bóng đá pháp động, một lần cho mỗi hàng được sửa đổi hoặc một lần mỗiSQLTuyên bố. Nếu một kích kèo bóng đá pháp sự kiện xảy ra, chức năng của trình kích kèo bóng đá pháp được gọi là thời gian thích hợp để xử lý sự kiện.
Hàm kích kèo bóng đá pháp phải được xác định trước khi kích kèo bóng đá pháp Bản thân nó có thể được tạo ra. Hàm kích kèo bóng đá pháp phải được khai báo là một chức năng không có đối số và loại trả vềTrigger. (Hàm kích kèo bóng đá pháp nhận được đầu vào thông qua một thông số đặc biệtTriggerDataCấu trúc, không ở dạng Đối số chức năng thông thường.)
Một khi chức năng kích kèo bóng đá pháp phù hợp đã được tạo, Trigger được thiết lập vớiTạo Trigger. Cùng một kích kèo bóng đá pháp chức năng có thể được sử dụng cho nhiều kích kèo bóng đá pháp.
12225_12810"Cấp hàng kích kèo bóng đá pháp "và"Cấp độ tuyên bố kích kèo bóng đá pháp ", tương ứng.
Cấp độ tuyên bố"Trước"Triggers tự nhiên bắn trước khi tuyên bố bắt đầu làm bất cứ điều gì, Trong khi cấp độ tuyên bố"Sau"Kích kèo bóng đá pháp lửa ở cuối câu lệnh. Cấp độ hàng"Trước"Kích kèo bóng đá pháp lửa ngay lập tức Trước khi một hàng cụ thể được kèo bóng đá pháp động, trong khi cấp độ"Sau"Kích kèo bóng đá pháp lửa ở cuối câu lệnh (nhưng trước bất kỳ cấp độ nào"Sau"Triggers).
Các chức năng kích kèo bóng đá pháp được gọi bởi các kích kèo bóng đá pháp trên mỗi câu chuyện nên Luôn trở lạinull. Chức năng kích kèo bóng đá pháp được gọi bởi các kích kèo bóng đá pháp trên mỗi hàng có thể trả về một hàng bảng (giá trị của kiểuHeaptuple) người thực thi, nếu họ chọn. Trình kích kèo bóng đá pháp cấp hàng được bắn trước khi kèo bóng đá pháp động có các lựa chọn sau:
nó có thể trả vềnullĐể bỏ qua kèo bóng đá pháp động cho hàng hiện tại. Điều này hướng dẫn người thực thi để không thực hiện thao tác cấp độ hàng đã gọi Trình kích kèo bóng đá pháp (việc chèn hoặc sửa đổi của một cụ thể Hàng bảng).
cho cấp độ hàngChènvàCập nhậtChỉ kích kèo bóng đá pháp, đã trả về Hàng trở thành hàng sẽ được chèn hoặc sẽ thay thế Hàng được cập nhật. Điều này cho phép chức năng kích kèo bóng đá pháp Sửa đổi hàng được chèn hoặc cập nhật.
cấp độ hàng trước khi kích kèo bóng đá pháp không có ý định gây ra một trong những hành vi này phải cẩn thận để trở lại như kết quả cùng một hàng đã được truyền vào (nghĩa làmớihàng choChènvàCập nhậtTriggers, Thecũhàng choXóaTriggers).
Giá trị trả về bị bỏ qua đối với các kích kèo bóng đá pháp cấp độ hàng Sau khi kèo bóng đá pháp động, và vì vậy họ cũng có thể trở lạinull.
Nếu có nhiều hơn một kích kèo bóng đá pháp được xác định cho cùng một sự kiện trên mối quan hệ tương tự, các kích kèo bóng đá pháp sẽ được bắn theo thứ tự bảng chữ cái Đặt hàng theo tên kích kèo bóng đá pháp. Trong trường hợp kích kèo bóng đá pháp trước, Hàng có thể được sửa đổi được trả về bởi mỗi kích kèo bóng đá pháp trở thành nhập vào kích kèo bóng đá pháp tiếp theo. Nếu bất kỳ trước khi kích kèo bóng đá pháp trả vềnull, kèo bóng đá pháp động bị bỏ rơi và Các kích kèo bóng đá pháp tiếp theo không được bắn.
Thông thường, hàng trước khi kích kèo bóng đá pháp được sử dụng để kiểm tra hoặc sửa đổi dữ liệu sẽ được chèn hoặc cập nhật. Vì Ví dụ, A Before Trigger có thể được sử dụng để chèn dòng điện thời gian vào cột dấu thời gian hay để kiểm tra xem hai yếu tố của Hàng là nhất quán. Hàng sau khi kích kèo bóng đá pháp là hợp lý nhất được sử dụng để tuyên truyền các bản cập nhật cho các bảng khác hoặc thực hiện Kiểm tra tính nhất quán so với các bảng khác. Lý do cho điều này Phân chia lao động là một kích kèo bóng đá pháp sau có thể chắc chắn nó là Nhìn thấy giá trị cuối cùng của hàng, trong khi một lần kích kèo bóng đá pháp trước không thể; Có thể có những người khác trước khi kích kèo bóng đá pháp bắn sau nó. Nếu bạn không có lý do cụ thể để thực hiện kích kèo bóng đá pháp trước hoặc Sau đó, trường hợp trước hiệu quả hơn, vì thông tin về kèo bóng đá pháp động không phải được lưu cho đến khi kết thúc tuyên bố.
Nếu chức năng kích kèo bóng đá pháp thực thi các lệnh SQL thì các lệnh này Các lệnh có thể kích kèo bóng đá pháp bắn một lần nữa. Điều này được gọi là xếp tầng kích kèo bóng đá pháp. Không có giới hạn trực tiếp về số lượng Mức tầng. Cascades có thể gây ra một Nhu cầu đệ quy của cùng một kích kèo bóng đá pháp; Ví dụ: mộtChènTrigger có thể thực thi lệnh đó là chèn một hàng bổ sung vào cùng một bảng, gây raChènTrigger sẽ được bắn lại. Nó Là trách nhiệm của lập trình viên kích kèo bóng đá pháp để tránh vô hạn đệ quy trong các kịch bản như vậy.
Khi một bộ kích kèo bóng đá pháp được xác định, các đối số có thể được chỉ định cho nó.17112_17615ChènSự kiện trên bất kỳ bảng nào có cột phù hợp, để tự động Theo dõi việc tạo hồ sơ trong một bảng giao dịch chẳng hạn. Nó cũng có thể được sử dụng để theo dõi các sự kiện cập nhật cuối cùng nếu được xác định là MỘTCập nhật17881_17892
Mỗi ngôn ngữ lập trình hỗ trợ kích kèo bóng đá pháp có phương thức cung cấp dữ liệu đầu vào kích kèo bóng đá pháp có sẵn cho chức năng kích kèo bóng đá pháp. Dữ liệu đầu vào này bao gồm loại kích kèo bóng đá pháp sự kiện (ví dụ:ChènhoặcCập nhật) cũng như bất kỳ đối số nào được liệt kê trongTạo Trigger. Cho a Trình kích kèo bóng đá pháp cấp hàng, dữ liệu đầu vào cũng bao gồmmớihàng choChènvàCập nhậtTriggers và/hoặccũhàng choCập nhậtvàXóaTriggers. Cấp độ tuyên bố Trình kích kèo bóng đá pháp hiện không có cách nào để kiểm tra Hàng riêng lẻ được sửa đổi bởi câu lệnh.