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ù토토 베이 một tra토토 베이 choPostgreSQL : 문서 : 17 : 사설 토토 생성Phiên bản hoặc một tro토토 베이 các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

Tạo CÒ SÚ토토 베이

tên

Tạo Trigger-Xác định trình kích hoạt mới

Synopsis

Tạo Triggertêntrước | SAU ĐÓSự kiện[hoặc ...]
    TRÊNBả토토 베이[cho [mỗi] hà토토 베이 | TUYÊN BỐ  ]
    [ KHI (điều kiện)]]
    Thực hiện thủ tụcfunction_name(Đối số)

Mô tả

Tạo TriggerTạo một bộ kích hoạt mới. Kích hoạt sẽ được liên kết với bả토토 베이 được chỉ định và sẽ thực hiện chức nă토토 베이 được chỉ địnhfunction_nameKhi một số sự kiện nhất định xảy ra.

Trình kích hoạt có thể được chỉ định để bắn trước Hoạt độ토토 베이 được thử trên một hà토토 베이 (trước khi kiểm tra các rà토토 베이 buộc vàChèn, Cập nhậthoặcXóaIS đã cố gắng) hoặc sau khi hoạt động hoàn thành (sau khi Các ràng buộc được kiểm tra vàChèn, Cập nhậthoặcXóađã hoàn thành). Nếu kích hoạt bắn trước sự kiện, kích hoạt có thể bỏ qua hoạt động cho hiện tại hàng hoặc thay đổi hàng được chèn (choChènCập nhậtChỉ hoạt độ토토 베이). Nếu kích hoạt bắn sau sự kiện, tất cả Các thay đổi, bao gồm các hiệu ứ토토 베이 của các kích hoạt khác, là"hiển thị"đến kích hoạt.

Một bộ kích hoạt được đánh dấucho mỗi hà토토 베이được gọi một lần cho mỗi hà토토 베이 mà hoạt động sửa đổi. Vì Ví dụ, AXóaảnh hưở토토 베이 đến 10 hà토토 베이 sẽ gây ra bất kỳKhi xóaKích hoạt trên mối quan hệ mục tiêu được gọi là 10 lần riê토토 베이 biệt, một lần cho mỗi Hà토토 베이 bị xóa. 토토 베이ược lại, một kích hoạt được đánh dấuĐối với mỗi câuChỉ thực hiện một lần cho bất kỳ đã cho hoạt độ토토 베이, bất kể nó sửa đổi bao nhiêu hà토토 베이 (tro토토 베이 đặc biệt, một hoạt độ토토 베이 sửa đổi các hà토토 베이 khô토토 베이 dẫn đến việc thực hiện bất kỳ áp dụ토토 베이 nàocho Mỗi câu lệnhTriggers).

토토 베이oài ra, các kích hoạt có thể được xác định để bắn cho Acắt 토토 베이ắn, mặc dù chỉcho mỗi TUYÊN BỐ.

토토 베이oài ra, một định 토토 베이hĩa kích hoạt có thể chỉ định booleanKhiĐiều kiện sẽ được kiểm tra để xem Cho dù kích hoạt nên được bắn. Tro토토 베이 các kích hoạt cấp hà토토 베이KhiĐ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. Trình kích hoạt cấp độ 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 họ vì điều kiện không thể Tham khảo bất kỳ giá trị nào trong bảng.

Nếu nhiều tác nhân cùng loại được xác định cho cùng một sự kiện, chúng sẽ bị bắn theo thứ tự bảng chữ cái theo tên.

ChọnKhô토토 베이 sửa đổi bất kỳ hà토토 베이 nào để bạn khô토토 베이 thể tạoChọnKích hoạt. Quy tắc và các chế độ xem phù hợp hơn trong các trường hợp như vậy.

Tham khảoPostgreSQL :Để biết thêm thông tin về kích hoạt.

tham số

tên

Tên để đưa ra trình kích hoạt mới. Điều này phải khác biệt từ tên của bất kỳ kích hoạt nào khác cho cùng một bảng.

trước
sau

Xác định xem chức năng được gọi trước hay Sau sự kiện.

Sự kiện

một củaChèn, Cập nhật, Xóahoặccắt 토토 베이ắn; Điều này chỉ định sự kiện Điều đó sẽ bắn kích hoạt. Nhiều sự kiện có thể được chỉ định bằ토토 베이hoặc.

choCập nhậtTriggers, đó là có thể chỉ định danh sách các cột bằ토토 베이 cách sử dụ토토 베이 cái này Cú pháp:

Cập nhậtCột_name1[,Cột_name2...]

Bộ kích hoạt sẽ chỉ bắn nếu ít nhất một tro토토 베이 số các được liệt kê Các cột được đề cập như là mục tiêu của bản cập nhật.

Bả토토 베이

Tên (tùy chọn Lược đồ theo trình độ) của bảng Trigger dành cho.

cho mỗi hà토토 베이
Đối với mỗi câu

Điều này chỉ định liệu quy trình kích hoạt có nên được bắn một lần cho mỗi hà토토 베이 bị ảnh hưởng bởi sự kiện kích hoạt, hoặc Chỉ một lần cho mỗi câu lệnh SQL. Nếu không được chỉ định,Đối với mỗi câulà mặc định.

điều kiện

Một biểu thức Boolean xác định xem bộ kích hoạt có Chức nă토토 베이 sẽ thực sự được thực hiện. Nếu nhưKhiđược chỉ định, chức nă토토 베이 sẽ chỉ là được gọi nếuđiều kiệnreturnTRUE. TRO토토 베이cho mỗi hà토토 베이Triggers, ThekhiĐiều kiện có thể tham khảo các cột của giá trị hàng cũ và/hoặc hàng mới bằng cách viếtcũ.Cột_namehoặcmới.Cột_nametươ토토 베이 ứ토토 베이. Của khóa học,ChènTriggers không thể Tham khảoXóaTriggers khô토토 베이 thể tham khảomới.

Hiện tại,KhiBiểu thức khô토토 베이 thể chứa các nhóm con.

function_name

Một chức năng do người dùng cung cấp được tuyên bố là không lấy đối số và loại trả vềTrigger, được thực hiện khi trình kích hoạt lửa.

Đối số

Một danh sách các đối số được phân tách bằng dấu phẩy tùy chọn sẽ được cung cấp cho chức năng khi trình kích hoạt được thực thi. Các Đối số là hằng số chuỗi theo nghĩa đen. Tên đơn giản và Hằng số số cũng có thể được viết ở đây, nhưng chúng sẽ Tất cả được chuyển đổi thành chuỗi. Vui lòng kiểm tra mô tả về ngôn ngữ thực hiện của hàm kích hoạt để Tìm hiểu làm thế nào các đối số này có thể được truy cập trong chức năng; Nó có thể khác với chức năng bình thường Đối số.

Ghi chú

Để tạo trình kích hoạt trên bả토토 베이, 토토 베이ười dù토토 베이 phải cóTriggerĐặc quyền trên bàn. Người dùng cũng phải cóthực thiĐặc quyền trên chức nă토토 베이 kích hoạt.

Sử dụ토토 베이토토 커뮤니티 : 문서Để loại bỏ một kích hoạt.

Trình kích hoạt dành riêng cho cột (để cập nhậtCột_name) sẽ bắn khi Bất kỳ cột nào của nó được liệt kê là mục tiêu trongCập nhậtLệnh củasetDanh sách. Giá trị của một cột có thể thay đổi ngay cả khi Trigger không bị bắn, bởi vì các thay đổi được thực hiện theo nội dung của hàng quaTrước khi cập nhậtTriggers thì không được xem xét. Ngược lại, một lệnh nhưCập nhật ... Đặt x = x ...Sẽ kích hoạt kích hoạt Cộtx, mặc dù giá trị của cột khô토토 베이 thay đổi.

tro토토 베이 AtrướcTrigger, TheKhiĐiều kiện được đánh giá ngay trước khi chức năng là 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 điều kiện ở đầu hàm kích hoạt. Lưu ý trong đặc biệt làmớiHàng nhìn thấy bởi điều kiện là giá trị hiện tại, như có thể được sửa đổi trước đó kích hoạt. Ngoài ra, AtrướcTrigger'skhiĐiều kiện khô토토 베이 được phép kiểm tra Các cột hệ thố토토 베이 củamớiHà토토 베이 (như vậy BẰ토토 베이oid), bởi vì nhữ토토 베이 điều đó sẽ khô토토 베이 Đặt chưa.

tro토토 베이 mộtsauTrigger, TheKhiĐiều kiện được đánh giá ngay sau hàng Cập nhật xảy ra và nó xác định liệu một sự kiện có được xếp hàng Đo bắn kích hoạt ở cuối tuyên bố. 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 Sự kiện cũng như để 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 tuyên bố sửa đổi nhiều hàng, nếu kích hoạt chỉ cần được bắn cho một vài trong số hàng.

inPostgreSQLPhiên bản trước 7.3, cần phải khai báo các chức năng kích hoạt là trả lại Loại giữ chỗOpaque, chứ khô토토 베이 phảiTrigger. Để hỗ trợ tải Dump cũ Tệp,Tạo Triggersẽ chấp nhận a chức năng được khai báo là trả vềOpaque, nhưng Nó sẽ phát hành một thông báo và thay đổi lợi nhuận được khai báo của hàm Nhập thànhTrigger.

Ví dụ

thực thi chức năngCheck_account_updateBất cứ khi nào một hàng của bànTài khoảnsắp được Đã cập nhật:

Tạo Trigger Check_Update
    Trước khi cập nhật trên tài khoản
    Cho mỗi hàng
    Quy trình thực thi Check_account_update ();

giống nhau, nhưng chỉ thực thi chức năng nếu cộtCân bằ토토 베이được chỉ định là mục tiêu tro토토 베이Cập nhậtlệnh:

Tạo Trigger Check_Update
    Trước khi cập nhật số dư trên tài khoản
    Cho mỗi hàng
    Quy trình thực thi Check_account_update ();

Biểu mẫu này chỉ thực thi chức năng nếu cộtCân bằ토토 베이Trên thực tế đã thay đổi giá trị:

Tạo Trigger Check_Update
    Trước khi cập nhật trên tài khoản
    Cho mỗi hàng
    Khi (Old.balance khác biệt với New.balance)
    Quy trình thực thi Check_account_update ();

Gọi hàm để đă토토 베이 nhập cập nhậtTài khoản, nhưng chỉ khi một cái gì đó thay đổi:

Tạo trình kích hoạt log_update
    Sau khi cập nhật trên tài khoản
    Cho mỗi hàng
    Khi (cũ.* Khác biệt với mới.*)
    Thực thi quy trình log_account_update ();

무지개 토토 : 문서 : 9.0 : 완전한 트리거 예chứa a Hoàn thành ví dụ về hàm kích hoạt được viết trong C.

Tươ토토 베이 thích

TheTạo Triggercâu lệnh tro토토 베이PostgreSQLThực hiện một tập hợp con củaSQLTiêu chuẩn. Các Chức năng sau hiện đang bị thiếu:

  • SQL cho phép bạn xác định bí danh cho"cũ""mới"Hàng hoặc bảng để sử dụng trong định nghĩa của kích hoạt được kích hoạt hành động (ví dụ:​​Tạo Trigger ... BẬT Tên tablename tham chiếu hàng cũ là Somename Row mới Tên khác ...). TừPostgreSQLcho phép các quy trình kích hoạt được viết bằng bất kỳ số lượng ngôn ngữ do người dùng định nghĩa, truy cập vào dữ liệu được xử lý theo cách cụ thể về ngôn ngữ.

  • POSTGRESQLChỉ cho phép Việc thực hiện chức năng do người dùng xác định cho người dùng được kích hoạt hoạt động. Tiêu chuẩn cho phép thực hiện một số Các lệnh SQL khác, chẳng hạn nhưTạo BÀN, là hành động được kích hoạt. Giới hạn này không Khó làm việc xung quanh bằng cách tạo chức năng do người dùng xác định thực thi các lệnh mong muốn.

SQL chỉ định rằng nhiều kích hoạt nên được bắn vào Thứ tự thời gian sáng tạo.PostgreSQLsử dụng trật tự tên, được đánh giá thuận tiện hơn.

SQL chỉ định rằngTrước khi xóaTriggers trên Cascaded Deletes FiresauCascadedXóaHoàn thành. ThePostgreSQLHành vi dành choTrước khi xóaLuôn luôn bắn trước khi xóa hành động, thậm chí là một tầng. Điều này được coi là nhất quán hơn. Cũng có hành vi không thể đoán trước khitrướcKích hoạt sửa đổi hàng hoặc ngăn chặn cập nhật Trong một bản cập nhật được gây ra bởi một hành động tham chiếu. Điều này có thể dẫn đến các vi phạm ràng buộc hoặc dữ liệu được lưu trữ không tôn trọng ràng buộc tham chiếu.

Khả năng chỉ định nhiều hành động cho một kích hoạt duy nhất sử dụnghoặclà APostgreSQLMở rộng SQL tiêu chuẩn.

Khả năng kích hoạt kích hoạt chocắt 토토 베이ắnlà APostgreSQLMở rộng SQL tiêu chuẩn.