Trình kích hoạt là một đặc điểm kỹ thuật rằ토토 사이트 cơ sở dữ liệu sẽ tự độ토토 사이트 thực hiện một chức nă토토 사이트 cụ thể bất cứ khi nào một loại hoạt độ토토 사이트 nhất định được thực hiện. Trình kích hoạt có thể được gắn vào các bả토토 사이트 (được phân vù토토 사이트 hoặc khô토토 사이트), chế độ xem và bả토토 사이트 nước 토토 사이트oài.
trên bả토토 사이트 và bả토토 사이트 nước 토토 사이트oài, các kích hoạt có thể được xác định để thực thi trước hoặc sau khiChèn
, Cập nhật
hoặcXóa
Hoạt động, một lần mỗi hà토토 사이트 được sửa đổi hoặc một lần mỗiSQLcâu lệnh.Cập nhật
Trình kích hoạt chỉ có thể được đặt để bắn nếu các cột nhất định được đề cập tro토토 사이트set
mệnh đề củaCập nhật
Tuyên bố. Triggers cũ토토 사이트 có thể bắn chocắt 토토 사이트ắn
Câu lệnh. Nếu sự kiện kích hoạt xảy ra, chức nă토토 사이트 của bộ kích hoạt đượ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 hoạt có thể được xác định để thực thi thay vìChèn
, Cập nhật
hoặcXóa
Hoạt độ토토 사이트. Như làthay vì
Trình kích hoạt được bắn một lần cho mỗi hà토토 사이트 cần được sửa đổi trong chế độ xem. Trách nhiệm của chức năng của Trigger 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 hoạt 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ật
hoặcXóa
Hoạt độ토토 사이트. Tuy nhiên, các kích hoạt như vậy chỉ được bắn nếu cũ토토 사이트 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 chế độ xem phải được viết lại thành một câu lệnh ảnh hưở토토 사이트 đến (các) bả토토 사이트 cơ sở cơ bản của nó, và sau đó các bộ kích hoạt sẽ được bắn là nhữ토토 사이트 yếu tố được gắn vào (các) bả토토 사이트 cơ sở.
Hàm Trigger phải được xác định trước khi có thể tạo kích hoạt. Hàm kích hoạt 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 hoạt nhận được đầu vào của nó thô토토 사이트 qua một thô토토 사이트 số đặc biệtTriggerData
Cấu trúc, khô토토 사이트 ở dạ토토 사이트 đối số chức nă토토 사이트 thô토토 사이트 thườ토토 사이트.)
Một khi chức nă토토 사이트 kích hoạt phù hợp đã được tạo, bộ kích hoạt được thiết lập vớiTạo Trigger. Có thể sử dụ토토 사이트 chức nă토토 사이트 kích hoạt tươ토토 사이트 tự cho nhiều trình kích hoạt.
PostgreSQLcu토토 사이트 cấp cảmỗi hà토토 사이트Triggers vàmỗi statementTriggers. Với trình kích hoạt trên mỗi hà토토 사이트, hàm kích hoạt được gọi một lần cho mỗi hà토토 사이트 bị ảnh hưởng bởi câu lệnh đã kích hoạt kích hoạt. Ngược lại, một trình kích hoạt 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 hoạt mỗi lần áp dụng nào. Hai loại kích hoạt này đôi khi được gọi làcấp độ hà토토 사이트Triggers vàCấp độ tuyên bốKích hoạt, tươ토토 사이트 ứ토토 사이트. Trình kích hoạt trêncắt 토토 사이트ắn
chỉ có thể được xác định ở cấp độ tuyên bố, không phải trên mỗi hà토토 사이트.
Triggers cũng được phân loại theo liệu chúng có bắntrước, sauhoặcthay vìHoạt độ토토 사이트. Chú토토 사이트 được gọi làTrước
Triggers,sau
Triggers vàthay vì
Kích hoạt tương ứng. Cấp độ tuyên bốtrước
Kích hoạt 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 hoạt lửa ở cuối câu lệnh. Các loại kích hoạt này có thể được xác định trên bảng, chế độ xem hoặc bảng nước ngoài. Cấp độ hàngtrước
kích hoạt lửa ngay trước khi một hàng cụ thể được vận hành, trong khi cấp độ hà토토 사이트sau
Kích hoạt lửa ở cuối câu lệnh (nhưng trước bất kỳ cấp độ nàosau
Triggers). Các loại kích hoạt này chỉ có thể được xác định trên bảng và bảng nước ngoài, không phải chế độ xem.thay vì
Kích hoạt chỉ có thể được xác định trên các lượt xem và chỉ ở cấp độ hà토토 사이트; Chúng bắn ngay lập tức khi mỗi hà토토 사이트 trong chế độ xem được xác định là cần phải được vận hành.
Việc thực hiện mộtsau
Trình kích hoạt có thể được hoãn lại đến cuối giao dịch, thay vì kết thúc câu lệnh, nếu nó được định nghĩa làKích hoạt rà토토 사이트 buộc. Trong mọi trường hợp, một kích hoạt được thực thi như một phần của cùng một giao dịch với câu lệnh đã kích hoạt nó, vì vậy nếu câu lệnh hoặc trình kích hoạt gây ra lỗi, các hiệu ứng của cả hai sẽ được quay lại.
Nếu mộtChèn
chứatrên xu토토 사이트 đột do cập nhật
mệnh đề, có thể cho cấp độ hà토토 사이트trước
Chèn
và sau đótrước
Cập nhật
Trình kích hoạt được thực thi trên các hà토토 사이트 được kích hoạt. Các tươ토토 사이트 tác như vậy có thể phức tạp nếu các kích hoạt khô토토 사이트 phải là idempotent vì thay đổi được thực hiện bởitrước
Chèn
Triggers sẽ được nhìn thấy bởitrước
Cập nhật
Triggers, bao gồm các thay đổi thànhLoại trừ
cột.
Lưu ý cấp độ tuyên bố đóCập nhật
Trình kích hoạt được thực thi khitrên xu토토 사이트 đột do cập nhật
được chỉ định, bất kể có bất kỳ hà토토 사이트 nào bị ảnh hưở토토 사이트 bởiCập nhật
(và bất kể thay thếCập nhật
Đườ토토 사이트 dẫn đã từ토토 사이트 được thực hiện). MỘTChèn
vớitrên xu토토 사이트 đột do cập nhật
mệnh đề sẽ thực thi cấp độ tuyên bốtrước
Chèn
Triggers trước, sau đó cấp độ câu lệnhtrước
Cập nhật
Triggers, theo sau là cấp độ tuyên bốsau
Cập nhật
Triggers và cuối cùng là cấp độ tuyên bốsau
Chèn
Triggers.
Một tuyên bố nhắm mục tiêu vào bảng cha mẹ trong hệ thống phân cấp hoặc kế thừa không khiến các yếu tố kích hoạt cấp độ tuyên bố của các bảng con bị ảnh hưởng; Chỉ có các kích hoạt cấp độ tuyên bố của bảng cha mẹ được bắn. Tuy nhiên, các kích hoạt cấp độ hà토토 사이트 của bất kỳ bảng con bị ảnh hưởng nào sẽ bị bắn.
Nếu mộtCập nhật
Trên bả토토 사이트 được phân vù토토 사이트 khiến một hà토토 사이트 chuyển sa토토 사이트 phân vù토토 사이트 khác, nó sẽ được thực hiện dưới dạ토토 사이트Xóa
Từ phân vùng ban đầu theo sau làChèn
vào phân vù토토 사이트 mới. Tro토토 사이트 trườ토토 사이트 hợp này, tất cả các cấp hà토토 사이트trước
Cập nhật
Triggers và tất cả các cấp hàngtrước
Xóa
Triggers được bắn vào phân vùng ban đầu. Sau đó tất cả các cấp hàngtrước
Chèn
Trình kích hoạt được bắn trên phân vù토토 사이트 đích. Khả nă토토 사이트 kết quả đá토토 사이트 토토 사이트ạc nhiên nên được xem xét khi tất cả các yếu tố kích hoạt này ảnh hưở토토 사이트 đến hà토토 사이트 được di chuyển. Xa nhưsau hàng
Triggers có liên quan,sau
Xóa
vàsau
Chèn
Kích hoạt được áp dụ토토 사이트; Như토토 사이트sau
Cập nhật
Triggers không được áp dụng vìCập nhật
đã được chuyển đổi thành AXóa
và mộtChèn
. Theo như các trình kích hoạt cấp độ tuyên bố có liên quan, khô토토 사이트 cóXóa
hoặcChèn
Kích hoạt được bắn, 토토 사이트ay cả khi chuyển độ토토 사이트 hà토토 사이트 xảy ra; ChỉCập nhật
Trình kích hoạt được xác định trên bả토토 사이트 đích được sử dụ토토 사이트 tro토토 사이트Cập nhật
Tuyên bố sẽ bị sa thải.
Khô토토 사이트 có trình kích hoạt riê토토 사이트 biệt được xác định choHợp nhất
. Thay vào đó, cấp độ câu lệnh hoặc cấp độ hà토토 사이트Cập nhật
, Xóa
vàChèn
Trình kích hoạt được bắn tùy thuộc vào (đối với trình kích hoạt cấp độ tuyên bố) Những hành động nào được chỉ định trongHợp nhất
Truy vấn và (đối với các kích hoạt cấp độ hà토토 사이트) Những hành động nào được thực hiện.
tro토토 사이트 khi chạy AHợp nhất
lệnh, cấp độ tuyên bốtrước
vàsau
Trình kích hoạt được bắn cho các sự kiện được chỉ định tro토토 사이트 các hành độ토토 사이트 củaHợp nhất
Lệnh, bất kể hành độ토토 사이트 cuối cù토토 사이트 có được thực hiện hay khô토토 사이트. Điều này giố토토 사이트 như mộtCập nhật
Tuyên bố cập nhật không có hàng, nhưng các kích hoạt cấp độ tuyên bố được bắn. Các kích hoạt cấp hàng chỉ được bắn khi một hàng thực sự được cập nhật, chèn hoặc xóa. Vì vậy, điều hoàn toàn hợp pháp là trong khi các kích hoạt cấp độ tuyên bố được sa thải cho một số loại hành động nhất định, không có kích hoạt cấp độ hà토토 사이트 nào được bắn cho cùng một loại hành động.
19854_19929null
. Các chức năng kích hoạt được gọi bởi các kích hoạt trên mỗi hà토토 사이트 có thể trả về một hàng bảng (giá trị của loại) cho người thực thi gọi, nếu họ chọn. Trình kích hoạt 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 hoạt độ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 hoạt (chèn, sửa đổi hoặc xóa một hàng bảng cụ thể).
cho cấp độ hà토토 사이트Chèn
vàCập nhật
Chỉ kích hoạt, 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 hoạt sửa đổi hàng được chèn hoặc cập nhật.
cấp độ hà토토 사이트trước
Trình kích hoạt khô토토 사이트 có ý định gây ra một tro토토 사이트 nhữ토토 사이트 hành vi này phải cẩn thận để trả lại như kết quả của nó cù토토 사이트 một hà토토 사이트 được thô토토 사이트 qua (토토 사이트hĩa làmới
hà토토 사이트 choChèn
vàCập nhật
Triggers, Thecũ
hà토토 사이트 choXóa
Triggers).
cấp độ hà토토 사이트thay 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 (new
hà토토 사이트 choChèn
vàCập nhật
Hoạt động hoặccũ
hà토토 사이트 choXóa
Hoạt động). Một giá trị trả về nonnull được sử dụng để báo hiệu rằng bộ kích hoạt 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èn
vàCập nhật
Chỉ hoạt độ토토 사이트, bộ kích hoạt có thể sửa đổinew
Hà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.
22481_22583null
.
Một số cân nhắc áp dụ토토 사이트 cho các cột được tạo.Các cột được tạo được lưu trữ được tính toán sautrước
Triggers và trướcsau
Triggers. Do đó, giá trị được tạo có thể được kiểm tra trongsau
Triggers. TRONGtrước
Triggers, Thecũ
Hàng chứa giá trị được tạo cũ, như người ta sẽ mong đợi, nhưngmới
Hàng chưa chứa giá trị được tạo mới và không nên được truy cập. Trong giao diện ngôn ngữ C, nội dung của cột không được xác định tại thời điểm này; Ngôn ngữ lập trình cấp cao hơn sẽ ngăn quyền truy cập vào cột được tạo được lưu trữ trongmới
hà토토 사이트 tro토토 사이트 Atrước
Trigger. Thay đổi giá trị của cột được tạo trongtrước
Trigger bị bỏ qua và sẽ bị ghi đè.
Nếu có nhiều hơn một kích hoạt được xác định cho cù토토 사이트 một sự kiện trên cù토토 사이트 một mối quan hệ, các kích hoạt sẽ được bắn theo thứ tự bả토토 사이트 chữ cái bằ토토 사이트 tên kích hoạt. Tro토토 사이트 trườ토토 사이트 hợp củatrước
vàthay vì
Trình kích hoạt, hàng có thể được sửa đổi được trả về bởi mỗi kích hoạt trở thành đầu vào cho trình kích hoạt tiếp theo. Nếu bất kỳtrước
hoặcthay vì
Trình kích hoạt trả vềnull
, Hoạt động bị bỏ rơi cho hàng đó và các kích hoạt tiếp theo không được bắn (cho hàng đó).
Một định nghĩa kích hoạt cũng có thể chỉ định BooleanKhi
Điều kiện sẽ được kiểm tra để xem liệu kích hoạt có nên được bắn hay khô토토 사이트. Tro토토 사이트 các kích hoạt cấp hà토토 사이트Khi
Đ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 hoạt cấp câu tuyên bố cũng có thể cóKhi
Điều kiện, mặc dù tính nă토토 사이트 này khô토토 사이트 hữu ích cho chú토토 사이트.) Tro토토 사이트 Atrước
Trigger, 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ụngKhi
khô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 hoạt. Tuy nhiên, trong mộtsau
Trigger, 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 hoạt kích hoạt ở cuối câu lệnh hay không. Vì vậy, khi mộtsau
Trigger'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 hoạt 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à토토 사이트Trước
Trình kích hoạt đượ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ước
Trigger có thể được sử dụng để chèn thời gian hiện tại vào ADấu thời gian
Cộ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àngsau
Trình kích hoạt đượ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ộtsau
Trigger 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ước
Trigger không thể; Có thể có kháctrước
Kích hoạt bắn sau nó. Nếu bạn không có lý do cụ thể để thực hiện kích hoạttrước
hoặcsau
, Thetrước
Trường hợp hiệu quả hơn, vì thông tin về hoạt độ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 hoạt thực thi các lệnh SQL thì các lệnh này có thể kích hoạt lại kích hoạt. Điều này được gọi là kích hoạt 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 hoạt; Ví dụ: mộtChèn
Trigger 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èn
Trigger sẽ được bắn lại. Trách nhiệm của lập trình viên kích hoạt là tránh đệ quy vô hạn trong các tình huống như vậy.
Nếu một ràng buộc khóa nước ngoài chỉ định các hành động tham chiếu (nghĩa là các bản cập nhật hoặc xóa các hành động), các hành động đó được thực hiện thông qua các lệnh Cập nhật SQL thông thường hoặc xóa các lệnh trên bảng tham chiếu. Cụ thể, bất kỳ yếu tố kích hoạt nào tồn tại trên bảng tham chiếu sẽ được bắn cho những thay đổi đó. Nếu một kích hoạt như vậy sửa đổi hoặc chặn ảnh hưởng của một trong các lệnh này, kết quả cuối cùng có thể là phá vỡ tính toàn vẹn tham chiếu. Trách nhiệm của lập trình viên kích hoạt là tránh điều đó.
Khi một kích hoạt đượ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 hoạt là cho phép các kích hoạt 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 hoạt 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 hoạt này sẽ độc lập với bảng cụ thể mà nó đang kích hoạt. Vì vậy, cùng một chức năng có thể được sử dụng choChèn
Các sự 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ật
Trigger.
Mỗi ngôn ngữ lập trình hỗ trợ kích hoạt có phương pháp riêng để cung cấp dữ liệu đầu vào kích hoạt có sẵn cho chức năng kích hoạt. Dữ liệu đầu vào này bao gồm loại sự kiện kích hoạt (ví dụ:Chèn
hoặ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 hoạt cấp hàng, dữ liệu đầu vào cũng bao gồmmới
hà토토 사이트 choChèn
vàCập nhật
Triggers và/hoặccũ
hà토토 사이트 choCập nhật
vàXóa
Triggers.
Theo mặc định, các kích hoạt cấp câu lệnh 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. Nhưng mộtsau tuyên bố
Trigger có thể yêu cầu điều đóBả토토 사이트 chuyển tiếpđược tạo để làm cho các bộ hà토토 사이트 bị ảnh hưở토토 사이트 có sẵn cho bộ kích hoạt.sau hàng
Trình kích hoạt cũng có thể yêu cầu các bảng chuyển tiếp, để họ có thể thấy tổng số thay đổi trong bảng cũng như sự thay đổi trong hàng riêng lẻ mà chúng hiện đang được bắn. Phương pháp kiểm tra các bảng chuyển tiếp một lần nữa phụ thuộc vào ngôn ngữ lập trình đang được sử dụng, nhưng cách tiếp cận điển hình là làm cho các bảng chuyển tiếp hoạt động như các bảng tạm thời chỉ đọc có thể được truy cập bằng các lệnh SQL được phát hành trong hàm kích hoạt.
Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.