Postgresql 9.1.24 Tài liệu | ||||
---|---|---|---|---|
prev | UP | Chương 36. Trình kích cách đọc kèo bóng đá | Tiếp theo |
Trình kích cách đọc kèo bóng đá là một đặc điểm kỹ thuật mà cơ sở dữ liệu nên tự động thực hiện một chức năng cụ thể bất cứ khi nào Loại cách đọc kèo bóng đá động được thực hiện. Trình kích cách đọc kèo bóng đá có thể được gắn vào cả hai bảng và lượt xem.
Trên các bảng, kích cách đọc kèo bóng đá có thể được xác định để thực thi trước hoặc trước hoặc Sau bất kỳChèn, Cập nhậthoặcXóacách đọc kèo bóng đá độ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ậtTriggers chỉ có thể được đặt để bắn Nếu một số cột nhất định được đề cập trongsetmệnh đề củaCập nhậtCâu lệnh. Triggers cũng có thể bắn chocắt ngắnCâu lệnh. Nếu một sự kiện kích cách đọc kèo bóng đá xảy ra, Chức năng của trình kích cách đọc kèo bóng đá được gọi vào thời điểm thích hợp để xử lý sự kiện.
Trên lượt xem, các kích cách đọc kèo bóng đá có thể được xác định để thực thi thay vìChèn, Cập nhật, hoặcXóacách đọc kèo bóng đá động.thay vìTriggers được bắn một lần cho mỗi hàng cần được sửa đổi trong quan điểm. Đó là trách nhiệm chức năng của bộ kích cách đọc kèo bóng đá để thực hiện các sửa đổi cần thiết cho các bảng cơ sở cơ bản và, khi thích hợp, trả lại Hàng sửa đổi vì nó sẽ xuất hiện trong chế độ xem. Kích cách đọc kèo bóng đá trên lượt xem có thể Cũng đượ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óacách đọc kèo bóng đá động.
Hàm kích cách đọc kèo bóng đá phải được xác định trước khi tự kích cách đọc kèo bóng đá có thể được tạo ra. Hàm kích cách đọc kèo bóng đá phải được khai báo là một chức năng không lấy đối số và loại trả vềTrigger. (Hàm kích cách đọc kèo bóng đá nhận được đầu vào của nó thông qua một đặc biệt được thông quaTriggerDataCấ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 cách đọc kèo bóng đá phù hợp đã được tạo, bộ kích cách đọc kèo bóng đá được thành lập vớiTạo CÒ SÚNG. Chức năng kích cách đọc kèo bóng đá tương tự có thể được sử dụng cho nhiều kích cách đọc kèo bóng đá.
PostgreSQLcung cấp cảmỗi hàngTriggers vàmỗi StatementTriggers. Với một kích cách đọc kèo bóng đá trên mỗi hàng, Hàm kích cách đọc kèo bóng đá được gọi một lần cho mỗi hàng Bị ảnh hưởng bởi tuyên bố đã bắn kích cách đọc kèo bóng đá. Ngược lại, a Trình kích cách đọc kèo bóng đá trên mỗi tuyên bố chỉ được gọi một lần khi thích hợp Tuyên bố đượ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 số không hàng vẫn sẽ dẫn đến việc thực hiện bất kỳ áp dụng nào Trình kích cách đọc kèo bóng đá mỗi câu chuyện. Hai loại kích cách đọc kèo bóng đá này đôi khi gọi điệncấp độ hàngTriggers vàCấp độ tuyên bốKích cách đọc kèo bóng đá, tương ứng. Kích cách đọc kèo bóng đá TRÊNcắt ngắnchỉ có thể được xác định tại mức độ tuyên bố. Trên tầm nhìn, các kích cách đọc kèo bóng đá lửa trước hoặc sau tháng năm chỉ được xác định ở cấp độ tuyên bố, trong khi các kích cách đọc kèo bóng đá bắn thay vì mộtChèn, Cập nhậthoặcXóaCó thể chỉ được xác định ở cấp độ hàng.
Trình kích cách đọc kèo bóng đá cũng được phân loại theo liệu chúng có bắntrước, sau,, hoặcthay vìcách đọc kèo bóng đá động. Đây là được gọi làtrướcTriggers,sauTriggers vàthay vìKích cách đọc kèo bóng đá tương ứng. Cấp độ tuyên bốtrướckích cách đọc kèo bóng đá tự nhiên bắn trước Câu lệnh bắt đầu làm bất cứ điều gì, trong khi cấp câu lệnhsauKích cách đọc kèo bóng đá lửa ở cuối tuyên bố. Những loại kích cách đọc kèo bóng đá này có thể được xác định trên các bảng hoặc quan điểm. Cấp độ hàngtrướcKích cách đọc kèo bóng đá lửa ngay trước khi một hàng cụ thể được vận hành, trong khi Cấp độ hàngsauKích cách đọc kèo bóng đá lửa ở cuối của câu lệnh (nhưng trước bất kỳ cấp độ nàosauTriggers). Những loại kích cách đọc kèo bóng đá này chỉ có thể được xác định trên bảng. Cấp độ hàngThay vào đó CỦATriggers 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 được vận hành trên.
Các chức năng kích cách đọc kèo bóng đá được gọi bởi các bộ kích cách đọc kèo bóng đá trên mỗi thằng Luôn trở lạinull. Chức năng kích cách đọc kèo bóng đá được gọi bởi các kích cách đọc kèo bóng đá trên mỗi hàng có thể trả về một hàng bảng (giá trị của kiểu) người thực thi, nếu họ chọn. Trình kích cách đọc kèo bóng đá cấp hàng được bắn trước khi cách đọc kèo bóng đá động có các lựa chọn sau:
Nó có thể trả vềnullĐể bỏ qua cách đọc kèo bóng đá độ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 cách đọc kèo bóng đá (Việc chèn, sửa đổi hoặc xóa cụ thể Hàng bảng).
cho cấp độ hàngChènvàCập nhậtChỉ kích cách đọc kèo bóng đá, đã trả về Hàng trở thành hàng sẽ được chèn hoặc sẽ thay thế Hàng đang được cập nhật. Điều này cho phép chức năng kích cách đọc kèo bóng đá sửa đổi hàng được chèn hoặc cập nhật.
cấp độ hàngtrướcTrình kích cách đọc kèo bóng đá đó 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à, Themớihàng choChènvàCập nhậtTriggers, Thecũhàng choXóaTriggers).
cấp độ hàngthay vìKích cách đọc kèo bóng đá nên trở lạinullĐể 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ở cơ bản của chế độ xem, hoặc nó sẽ trả về hàng chế độ xem đã được truyền trong (Thenewhàng choChènvàCập nhậtcách đọc kèo bóng đá động hoặccũhàng choXóacách đọc kèo bóng đá động). Một sự trở lại không liên quan giá trị được sử dụng để báo hiệu rằng bộ kích cách đọc kèo bóng đá thực hiện Sửa đổi dữ liệu trong chế độ xem. Điều này sẽ gây ra số lượng của Số lượng hàng bị ảnh hưởng bởi lệnh sẽ được tăng lên. VìChènvàCập nhậtcách đọc kèo bóng đá động, bộ kích cách đọc kèo bóng đá 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.
Giá trị trả về bị bỏ qua đối với các kích cách đọc kèo bóng đá cấp độ hàng một cách đọc kèo bóng đá động và để họ có thể trả lạinull.
Nếu có nhiều hơn một kích cách đọc kèo bóng đá đượ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 cách đọc kèo bóng đá sẽ được bắn theo thứ tự bảng chữ cái bằng tên kích cách đọc kèo bóng đá. Trong trường hợp củaTrướcvàthay vìTriggers, The Hàng có thể được sửa đổi được trả về bởi mỗi lần kích cách đọc kèo bóng đá trở thành đầu vào đến kích cách đọc kèo bóng đá tiếp theo. Nếu bất kỳtrướchoặcthay vìTrình kích cách đọc kèo bóng đá trả vềnull, cách đọc kèo bóng đá động bị bỏ rơi cho hàng đó và Các kích cách đọc kèo bóng đá tiếp theo không được bắn (cho hàng đó).
Một định nghĩa kích cách đọc kèo bóng đá cũng có thể chỉ định BooleanKhiĐiều kiện sẽ được kiểm tra để xem Cho dù kích cách đọc kèo bóng đá nên được bắn. Trong các kích cách đọc kèo bóng đá cấp hàngKhiĐiều kiện có thể kiểm tra cái cũ và/hoặc các giá trị mới của các cột của hàng. (Cấp độ tuyên bố Trình kích cách đọc kèo bóng đá 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 họ.) Trong mộttrướcTrigger, TheKhiĐiều kiện được đánh giá ngay trước khi chức năng hoặc sẽ được thực hiện, vì vậy sử dụngKhikhông khác biệt về mặt vật chất với việc kiểm tra cùng một điều kiện tại bắt đầu chức năng kích cách đọc kèo bóng đá. 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 xem một sự kiện có được xếp hàng để kích cách đọc kèo bóng đá kích cách đọc kèo bóng đá tại Kết thúc tuyên bố. Vì vậy, khi mộtsauTrigger'sKhiĐiều kiện không quay lại Đúng, không cần thiết để xếp hàng một sự kiện cũng như không tìm nạp lại Hàng ở cuối tuyên bố. Đ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 cách đọc kèo bóng đá chỉ cần được bắn cho một vài trong số các hàng.Thay vào đó CỦATriggers không hỗ trợKhiĐiều kiện.
Thông thường, cấp độ hàngtrướcTriggers đượ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 Các yếu tố của hàng là nhất quán. Cấp độ hàngsauTriggers được sử dụng một cách hợp lý nhất để nhân giống các bản cập nhật cho các bảng khác hoặc kiểm tra tính nhất quán chống lại 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 nó là nhìn thấy giá trị cuối cùng của hàng, trong khitrướcTrigger không thể; Có thể có kháctrướcKích cách đọc kèo bóng đá bắn sau nó. Nếu bạn không có lý do cụ thể để tạo kích cách đọc kèo bóng đátrướchoặcsau, Thetrướctrường hợp hiệu quả hơn, vì thông tin về cách đọc kèo bóng đá động không phải được lưu cho đến khi kết thúc câu lệnh.
Nếu chức năng kích cách đọc kèo bóng đá thực thi các lệnh SQL thì các lệnh này Các lệnh có thể kích cách đọc kèo bóng đá bắn một lần nữa. Điều này được gọi là xếp tầng kích cách đọc kèo bóng đá. Không có giới hạn trực tiếp về số lượng thác cấp độ. Cascades có thể gây ra một đệ quy Yêu cầu cùng một kích cách đọc kèo bóng đá; 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. Nó là trách nhiệm của lập trình viên kích cách đọc kèo bóng đá để tránh vô hạn đệ quy trong các kịch bản như vậy.
Khi một bộ kích cách đọc kèo bóng đá được xác định, các đối số có thể được chỉ định cho nó. Mục đích bao gồm các đối số trong kích cách đọc kèo bóng đá Định nghĩa là cho phép các kích cách đọc kèo bóng đá khác nhau có các yêu cầu để gọi cùng một chức năng. Ví dụ, ở đó có thể là một chức năng kích cách đọc kèo bóng đá tổng quát được sử dụng như Đối số 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 trong cái khác. Viết đúng, cái này chức năng kích cách đọc kèo bóng đá sẽ độc lập với bảng cụ thể kích cách đọc kèo bóng đá trên. 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 hồ sơ trong bảng giao dịch Ví dụ. 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 định nghĩa làCập nhậtTrigger.
Mỗi ngôn ngữ lập trình hỗ trợ kích cách đọc kèo bóng đá có Phương pháp cung cấp dữ liệu đầu vào kích cách đọc kèo bóng đá có sẵn cho trình kích cách đọc kèo bóng đá chức năng. Dữ liệu đầu vào này bao gồm loại sự kiện kích cách đọc kèo bóng đá (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 một cấp độ hàng Trình kích cách đọc kèo bóng đá, dữ liệu đầu vào cũng bao gồmnewhàng choChènvàCập nhậtTriggers và/hoặccũhàng choCập nhậtvàXóaTriggers. Cấp độ tuyên bố Triggers hiện không có cách nào để kiểm tra cá nhân Hàng được sửa đổi bởi câu lệnh.