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

36.1. Tổng quan về hành vi kích kèo bóng đá hôm nay và ngày mai

Trình kích kèo bóng đá hôm nay và ngày mai là một đặc điểm kỹ thuật rằng cơ sở dữ liệu sẽ tự động thực thi một chức năng cụ thể bất cứ khi nào một loại kèo bóng đá hôm nay và ngày mai động nhất định được thực hiện. Trình kích kèo bóng đá hôm nay và ngày mai có thể được gắn vào bảng, chế độ xem và bảng nước ngoài.

Trên các bảng và bảng nước ngoài, các kích kèo bóng đá hôm nay và ngày mai có thể được xác định để thực thi trước hoặc sau khiChèn, Cập nhậthoặcXóakèo bóng đá hôm nay và ngày mai động, một lần mỗi hàng được sửa đổi hoặc một lần mỗiSQLcâu lệnh.Cập nhậtTrình kích kèo bóng đá hôm nay và ngày mai chỉ có thể được đặt để bắn nếu các cột nhất định được đề cập trongsetmệnh đề củaCập nhậtTuyên bố. Triggers cũng có thể bắn chocắt ngắnCâu lệnh. Nếu một sự kiện kích kèo bóng đá hôm nay và ngày mai xảy ra, chức năng của bộ kích kèo bóng đá hôm nay và ngày mai được gọi vào thời điểm thích hợp để xử lý sự kiện. Bảng nước ngoài hoàn toàn không hỗ trợ câu lệnh cắt ngắn.

Trên lượt xem, các kích kèo bóng đá hôm nay và ngày mai có thể được xác định để thực thi thay vìChèn, Cập nhậthoặcXóakèo bóng đá hôm nay và ngày mai động. Như làthay vìKích kèo bóng đá hôm nay và ngày mai được bắn một lần cho mỗi hàng cần được sửa đổi trong chế độ xem. Trách nhiệm của chức năng kích kèo bóng đá hôm nay và ngày mai là thực hiện các sửa đổi cần thiết cho (các) bảng cơ sở bên dưới của chế độ xem và, khi thích hợp, trả về hàng sửa đổi khi nó sẽ xuất hiện trong chế độ xem. Trình kích kèo bóng đá hôm nay và ngày mai trên lượt xem cũng có thể được xác định để thực thi một lần mỗiSQLcâu lệnh, trước hoặc sauChèn, Cập nhậthoặcXóakèo bóng đá hôm nay và ngày mai động. Tuy nhiên, các kích kèo bóng đá hôm nay và ngày mai như vậy chỉ được bắn nếu cũng có mộtthay vìTrigger trên chế độ xem. Mặt khác, bất kỳ câu lệnh nào nhắm mục tiêu vào chế độ xem phải được viết lại thành một câu lệnh ảnh hưởng đến (các) bảng cơ sở cơ bản của nó, và sau đó các kích kèo bóng đá hôm nay và ngày mai sẽ được bắn là những yếu tố được gắn vào (các) bảng cơ sở.

Hàm Trigger phải được xác định trước khi có thể tạo kích kèo bóng đá hôm nay và ngày mai. Hàm kích kèo bóng đá hôm nay và ngày mai phải được khai báo là một hàm không có đối số và loại trả vềTrigger. (Hàm kích kèo bóng đá hôm nay và ngày mai nhận được đầu vào của nó 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 đá hôm nay và ngày mai phù hợp đã được tạo, bộ kích kèo bóng đá hôm nay và ngày mai được thiết lập vớiTạo Trigger. Có thể sử dụng chức năng kích kèo bóng đá hôm nay và ngày mai tương tự cho nhiều trình kích kèo bóng đá hôm nay và ngày mai.

PostgreSQLcung cấp cảmỗi hàngTriggers vàmỗi StatementTriggers. Với trình kích kèo bóng đá hôm nay và ngày mai trên mỗi hàng, hàm kích kèo bóng đá hôm nay và ngày mai được gọi một lần cho mỗi hàng bị ảnh hưởng bởi câu lệnh đã kích kèo bóng đá hôm nay và ngày mai kích kèo bóng đá hôm nay và ngày mai. Ngược lại, một trình kích kèo bóng đá hôm nay và ngày mai trên mỗi tuyên bố chỉ được gọi một lần khi một câu lệnh thích hợp được thực thi, bất kể số lượng hàng bị ảnh hưởng bởi tuyên bố đó. Cụ thể, một tuyên bố ảnh hưởng đến các hàng bằng không vẫn sẽ dẫn đến việc thực hiện bất kỳ yếu tố kích kèo bóng đá hôm nay và ngày mai mỗi lần áp dụng nào. Hai loại kích kèo bóng đá hôm nay và ngày mai này đôi khi được gọi làcấp độ hàngTriggers vàcấp độ tuyên bốKích kèo bóng đá hôm nay và ngày mai, tương ứng. Trình kích kèo bóng đá hôm nay và ngày mai trêncắt ngắnchỉ có thể được xác định ở cấp độ tuyên bố. Trên các quan điểm, các kích kèo bóng đá hôm nay và ngày mai bắn trước hoặc sau chỉ có thể được xác định ở cấp độ tuyên bố, trong khi các kích kèo bóng đá hôm nay và ngày mai bắn thay vìChèn, Cập nhậthoặcXóachỉ có thể được xác định ở cấp độ hàng.

Triggers cũng được phân loại theo liệu chúng có bắntrước, sauhoặcthay vìkèo bóng đá hôm nay và ngày mai động. Chúng được gọi làtrướcTriggers,sauTriggers vàthay vìKích kèo bóng đá hôm nay và ngày mai tương ứng. Cấp độ tuyên bốtrướckích kèo bóng đá hôm nay và ngày mai 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ốsauKích kèo bóng đá hôm nay và ngày mai lửa ở cuối câu lệnh. Các loại kích kèo bóng đá hôm nay và ngày mai này có thể được xác định trên các bảng hoặc chế độ xem. Cấp độ hàngtrướcKích kèo bóng đá hôm nay và ngày mai lửa ngay trước khi một hàng cụ thể được vận hành, trong khi cấp độ hàngsauKích kèo bóng đá hôm nay và ngày mai lửa ở cuối câu lệnh (nhưng trước bất kỳ cấp độ nàosauTriggers). Những loại kích kèo bóng đá hôm nay và ngày mai này chỉ có thể được xác định trên bảng và bảng nước ngoài. Cấp độ hàngthay vìTrình kích kèo bóng đá hôm nay và ngày mai chỉ có thể được xác định trên các chế độ xem và lửa ngay lập tức khi mỗi hàng trong chế độ xem được xác định là cần phải được vận hành.

Các chức năng kích kèo bóng đá hôm nay và ngày mai được gọi bởi các trình kích kèo bóng đá hôm nay và ngày mai trên mỗi lần phải luôn quay lạinull. Các chức năng kích kèo bóng đá hôm nay và ngày mai được gọi bởi các kích kèo bóng đá hôm nay và ngày mai trên mỗi hàng có thể trả về một hàng bảng (giá trị của loại) cho người thực thi gọi điện, nếu họ chọn. Trình kích kèo bóng đá hôm nay và ngày mai cấp hàng được bắn trước khi một thao tác có các lựa chọn sau:

  • nó có thể trả vềnullĐể bỏ qua kèo bóng đá hôm nay và ngày mai độ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 đá hôm nay và ngày mai (chèn, sửa đổi hoặc xóa một hàng bảng cụ thể).

  • cho cấp độ hàngChènCập nhậtChỉ kích kèo bóng đá hôm nay và ngày mai, hàng được trả về 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 đá hôm nay và ngày mai sửa đổi hàng được chèn hoặc cập nhật.

cấp độ hàngtrướcTrình kích kèo bóng đá hôm nay và ngày mai 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ủa nó cùng một hàng được thông qua (nghĩa làmớihàng choChènCập nhậtTriggers, Thehàng choXóaTriggers).

cấp độ hàngthay vìTrigger nên trả vềnullĐể chỉ ra rằng nó không sửa đổi bất kỳ dữ liệu nào từ các bảng cơ sở bên dưới của chế độ xem hoặc nó sẽ trả về hàng chế độ xem được truyền trong (mớihàng choChènCập nhậtkèo bóng đá hôm nay và ngày mai động hoặchàng choXóakèo bóng đá hôm nay và ngày mai động). Một giá trị trả về nonnull được sử dụng để báo hiệu rằng bộ kích kèo bóng đá hôm nay và ngày mai thực hiện các sửa đổi dữ liệu cần thiết trong chế độ xem. Điều này sẽ làm cho số lượng của số lượng hàng bị ảnh hưởng bởi lệnh được tăng lên. VìChènCập nhậtChỉ kèo bóng đá hôm nay và ngày mai động, trình kích kèo bóng đá hôm nay và ngày mai có thể sửa đổimớiHàng trước khi trả lại. Điều này sẽ thay đổi dữ liệu được trả về bởiChèn trả vềhoặcCập nhật trả vềvà rất hữu ích khi chế độ xem sẽ không hiển thị chính xác cùng một dữ liệu được cung cấp.

17138_17240null.

Nếu có nhiều hơn một kích kèo bóng đá hôm nay và ngày mai được xác định cho cùng một sự kiện trên cùng một mối quan hệ, các kích kèo bóng đá hôm nay và ngày mai sẽ được bắn theo thứ tự bảng chữ cái bằng tên kích kèo bóng đá hôm nay và ngày mai. Trong trường hợp củatrướcthay vìTrình kích kèo bóng đá hôm nay và ngày mai, hàng có thể được sửa đổi được trả về bởi mỗi kích kèo bóng đá hôm nay và ngày mai trở thành đầu vào cho trình kích kèo bóng đá hôm nay và ngày mai tiếp theo. Nếu bất kỳtrướchoặcthay vìTrình kích kèo bóng đá hôm nay và ngày mai trả vềnull, kèo bóng đá hôm nay và ngày mai động bị bỏ rơi cho hàng đó và các kích kèo bóng đá hôm nay và ngày mai tiếp theo không được bắn (cho hàng đó).

Một định nghĩa kích kèo bóng đá hôm nay và ngày mai cũng có thể chỉ định BooleanKhiĐiều kiện sẽ được kiểm tra để xem liệu kích kèo bóng đá hôm nay và ngày mai có nên được bắn hay không. Trong các kích kèo bóng đá hôm nay và ngày mai cấp hàngkhiĐiều kiện có thể kiểm tra các giá trị cũ và/hoặc mới của các cột của hàng. (Trình kích kèo bóng đá hôm nay và ngày mai cấp câu tuyên bố cũng có thể cóKhiĐiều kiện, mặc dù tính năng này không hữu ích cho chúng.) Trong AtrướcTrigger, TheKhiĐiều kiện được đánh giá ngay trước khi chức năng hoặc sẽ được thực thi, vì vậy sử dụngkhikhông khác biệt về mặt vật chất so với việc kiểm tra cùng một điều kiện ở đầu hàm kích kèo bóng đá hôm nay và ngày mai. Tuy nhiên, trong mộtsauTrigger, TheKhiĐiều kiện được đánh giá ngay sau khi cập nhật hàng xảy ra và nó xác định liệu một sự kiện có được xếp hàng để kích kèo bóng đá hôm nay và ngày mai kích kèo bóng đá hôm nay và ngày mai ở cuối tuyên bố hay không. Vì vậy, khi mộtsauTrigger'sKhiĐiều kiện không trả về true, không cần thiết phải xếp hàng một sự kiện cũng như không tìm nạp lại hàng ở cuối câu lệnh. Điều này có thể dẫn đến tăng tốc đáng kể trong các câu lệnh sửa đổi nhiều hàng, nếu kích kèo bóng đá hôm nay và ngày mai chỉ cần được bắn vào một vài hàng.thay vìTriggers không hỗ trợKhiĐiều kiện.

Thông thường, cấp độ hàngtrướcTrình kích kèo bóng đá hôm nay và ngày mai đượ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í dụ: AtrướcTrigger có thể được sử dụng để chèn thời gian hiện tại vào ADấu thời gianCột hoặc để kiểm tra xem hai phần tử của hàng có nhất quán không. Cấp độ hàngsauTrình kích kèo bóng đá hôm nay và ngày mai được sử dụng một cách hợp lý nhất để 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 đối với các bảng khác. Lý do cho sự phân công lao động này là mộtsauTrigger có thể chắc chắn rằng nó đang nhìn thấy giá trị cuối cùng của hàng, trong khi AtrướcTrigger không thể; Có thể có kháctrướcKích kèo bóng đá hôm nay và ngày mai 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 đá hôm nay và ngày maitrướchoặcsau, TheTrướcTrường hợp hiệu quả hơn, vì thông tin về kèo bóng đá hôm nay và ngày mai động không phải được lưu cho đến khi kết thúc câu lệnh.

Nếu hàm kích kèo bóng đá hôm nay và ngày mai thực thi các lệnh SQL thì các lệnh này có thể kích kèo bóng đá hôm nay và ngày mai lại kích kèo bóng đá hôm nay và ngày mai. Điều này được gọi là kích kèo bóng đá hôm nay và ngày mai xếp tầng. Không có giới hạn trực tiếp về số lượng tầng. Cascades có thể gây ra một lời mời đệ quy của cùng một kích kèo bóng đá hôm nay và ngày mai; Ví dụ: mộtChènTrigger có thể thực thi lệnh 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. Trách nhiệm của lập trình viên kích kèo bóng đá hôm nay và ngày mai là tránh đệ quy vô hạn trong các tình huống như vậy.

Khi một kích kèo bóng đá hôm nay và ngày mai được xác định, các đối số có thể được chỉ định cho nó. Mục đích của việc bao gồm các đối số trong định nghĩa kích kèo bóng đá hôm nay và ngày mai là cho phép các kích kèo bóng đá hôm nay và ngày mai khác nhau có yêu cầu tương tự để gọi cùng một hàm. Ví dụ, có thể có một chức năng kích kèo bóng đá hôm nay và ngày mai tổng quát lấy làm đối số của nó hai tên cột và đặt người dùng hiện tại vào một và dấu thời gian hiện tại vào tên kia. Được viết đúng, chức năng kích kèo bóng đá hôm nay và ngày mai này sẽ độc lập với bảng cụ thể mà nó đang kích kèo bóng đá hôm nay và ngày mai. Vì vậy, cùng một chức năng có thể được sử dụng choChè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 các bản ghi trong 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àCập nhậtTrigger.

Mỗi ngôn ngữ lập trình hỗ trợ các kích kèo bóng đá hôm nay và ngày mai có phương pháp riêng để cung cấp dữ liệu đầu vào kích kèo bóng đá hôm nay và ngày mai có sẵn cho chức năng kích kèo bóng đá hôm nay và ngày mai. Dữ liệu đầu vào này bao gồm loại sự kiện kích kèo bóng đá hôm nay và ngày mai (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. Đối với trình kích kèo bóng đá hôm nay và ngày mai cấp hàng, dữ liệu đầu vào cũng bao gồmmớihàng choChènCập nhậtTriggers và/hoặchàng choCập nhậtXóaTriggers. Trình kích kèo bóng đá hôm nay và ngày mai cấp độ tuyên bố hiện không có cách nào để kiểm tra (các) hàng riêng lẻ được sửa đổi bởi câu lệnh.