Postgresql 9.2.24 Tài liệu | ||||
---|---|---|---|---|
스포츠 토토 베트맨 : 문서 : 9.2 : PL/스포츠 토토 베트맨에서 데이터베이스 액세스 | UP | Chương 40. PL/사설 토토 - Ngôn ngữ thủ tục 사설 토토 | 스포츠 토토 결과 : 문서 : 9.2 : 모듈과 알 수없는 명령 |
Quy trình kích hoạt có thể được viết bằng PL/사설 토토.PostgreSQLyêu cầu một quy trình là được gọi là một 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ề củaTrigger.
Thông tin từ Trình quản lý kích hoạt được chuyển cho Cơ quan thủ tục trong các biến sau:
Tên của bộ kích hoạt từTạo Triggercâu lệnh.
ID đối tượng của bảng gây ra kích hoạt thủ tục được gọi.
Tên của bảng gây ra quy trình kích hoạt được gọi.
lược đồ của bảng gây ra kích hoạt thủ tục được gọi.
Một danh sách 사설 토토 của tên cột bảng, được đặt trước với một
yếu tố danh sách trống. Vì vậy, tìm kiếm một tên cột trong danh sách
với사설 토토'sLsearch
lệnh trả về phần tử của phần tử
Số bắt đầu bằng 1 cho cột đầu tiên, theo cùng một cách
Các cột được đánh số theo sốPostgreSQL. (Các yếu tố danh sách trống cũng
xuất hiện ở vị trí của các cột đã bị rơi,
để việc đánh số thuộc tính là chính xác cho các cột
quyền của họ.)
chuỗitrước, sauhoặcThay vào đó CỦA, Tùy thuộc vào loại sự kiện kích hoạt.
chuỗihànghoặccâu lệnhTùy thuộc vào loại kích hoạt sự kiện.
chuỗiChèn, Cập nhật, Xóahoặccắt ngắnTùy thuộc vào loại sự kiện kích hoạt.
Một mảng kết hợp chứa các giá trị của cái mới Hàng bảng choChènhoặcCập nhậthành động hoặc trống choXóa. Mảng được lập chỉ mục bằng tên cột. Các cột là NULL sẽ không xuất hiện trong mảng. Đây là không đặt cho các kích hoạt cấp câu lệnh.
Một mảng kết hợp chứa các giá trị của cái cũ Hàng bảng choCập nhậthoặcXóaHành động hoặc trống choChèn. Mảng được lập chỉ mục bằng tên cột. Các cột là NULL sẽ không xuất hiện trong mảng. Đây là không đặt cho các kích hoạt cấp câu lệnh.
Một danh sách 사설 토토 của các đối số cho quy trình như được đưa ra trong TheTạo TriggerTuyên bố. Những đối số này cũng có thể truy cập được là$ 1 ... $nTrong cơ thể thủ tục.
Giá trị trả về từ quy trình kích hoạt có thể là một trong những chuỗiOKhoặcBỏ quahoặc danh sách các cặp tên/giá trị cột. Nếu Giá trị trả về làOK, Hoạt động (Chèn/Cập nhật/Xóa) đã bắn Trình kích hoạt sẽ tiến hành bình thường.Bỏ quaNói với trình quản lý kích hoạt để âm thầm triệt tiêu hoạt động cho Hàng này. Nếu một danh sách được trả về, nó sẽ yêu cầu PL/사설 토토 trả về Hàng sửa đổi cho Trình quản lý kích hoạt; Nội dung của các sửa đổi Hàng được chỉ định bởi các tên và giá trị cột trong danh sách. Bất kì Các cột không được đề cập trong danh sách được đặt thành NULL. Trả lại a Hàng sửa đổi chỉ có ý nghĩa đối với cấp độ hàngtrước ChènhoặcCập nhậtTriggers, trong đó đã sửa đổi Hàng sẽ được chèn thay vì hàng được đưa ra trong$ new; hoặc cho cấp độ hàngThay vào đó CỦA ChènhoặcCập nhậtTrình kích hoạt trong đó hàng được trả lại được sử dụng làm dữ liệu nguồn choChèn trả vềhoặcCập nhật trả vềmệnh đề. Trong cấp độ hàngtrước Xóahoặcthay vì XóaTriggers, trả về một hàng sửa đổi có Hiệu ứng tương tự như trả lạiOK, đó là tiền thu được. Giá trị trả về kích hoạt bị bỏ qua cho tất cả Các loại kích hoạt khác.
Tip:Danh sách kết quả có thể được tạo từ một mảng Biểu diễn của tuple đã sửa đổi vớimảng getLệnh 사설 토토.
Đây là một ví dụ nhỏ quy trình kích hoạt buộc Giá trị số nguyên trong bảng để theo dõi số lượng cập nhật được thực hiện trên hàng. Đối với các hàng mới được chèn, giá trị được khởi tạo thành 0 và sau đó tăng lên trên mỗi bản cập nhật hoạt động.
Tạo chức năng TrigFunc_ModCount () Trả về Trigger dưới dạng $$ chuyển đổi $ tg_op CHÈN Đặt mới ($ 1) 0 CẬP NHẬT Đặt mới ($ 1) $ Old ($ 1) tăng mới ($ 1) mặc định trả lại ok trả lại [mảng nhận mới] $$ Ngôn ngữ pltcl; Tạo bảng mytab (số nguyên số, văn bản mô tả, số nguyên modcnt); Tạo Trigger Trig_MyTab_ModCount trước khi chèn hoặc cập nhật trên MyTab Đối với mỗi hàng thực thi quy trình TrigFunc_ModCount ('modcnt');
Lưu ý rằng chính quy trình kích hoạt không biết Tên cột; Đó là cung cấp từ các đối số kích hoạt. Cái này Cho phép quy trình kích hoạt được sử dụng lại với các bảng khác nhau.