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 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

Tạo kèo bóng đá c1

Tạo kèo bóng đá c1 - Xác định kèo bóng đá c1 viết lại mới

Synopsis

Tạo [hoặc thay thế] kèo bóng đá c1tênnhư trênSự kiệnđếnTable_Name[WHEREđiều kiện]
    Làm [cũng | Thay vào đó] không có gì |lệnh| (lệnh;lệnh...)WHEREsự kiệncó thể là một trong số:Chọn | Chèn | Cập nhật | XÓA BỎ

Mô tả

Tạo kèo bóng đá c1Xác định kèo bóng đá c1 mới áp dụng cho một bảng hoặc chế độ xem được chỉ định.Tạo hoặc thay thế kèo bóng đá c1sẽ tạo một kèo bóng đá c1 mới hoặc thay thế một kèo bóng đá c1 hiện có cùng tên cho cùng một bảng.

ThePostgreSQLHệ thống kèo bóng đá c1 cho phép người ta xác định một hành động thay thế được thực hiện trên các phần chèn, cập nhật hoặc xóa trong các bảng cơ sở dữ liệu. Nói một cách thô bạo, một kèo bóng đá c1 khiến các lệnh bổ sung được thực thi khi một lệnh nhất định trên một bảng nhất định được thực thi. Ngoài ra, mộtThay vào đókèo bóng đá c1 có thể thay thế một lệnh đã cho bằng cách khác hoặc gây ra lệnh không được thực thi. Các kèo bóng đá c1 được sử dụng để thực hiện các chế độ xem SQL là tốt. Điều quan trọng là phải nhận ra rằng một kèo bóng đá c1 thực sự là một cơ chế chuyển đổi lệnh hoặc macro lệnh. Việc chuyển đổi xảy ra trước khi thực hiện lệnh bắt đầu. Nếu bạn thực sự muốn một hoạt động bắn độc lập cho mỗi hàng vật lý, bạn có thể muốn sử dụng một trình kích hoạt, không phải là một kèo bóng đá c1. Thêm thông tin về hệ thống kèo bóng đá c1 làChương 41.

Hiện tại,trên ChọnCác kèo bóng đá c1 chỉ có thể được đính kèm với các chế độ xem. kèo bóng đá c1 như vậy phải được đặt tên"_return", phải là một điều kiện vô điều kiệnThay vào đókèo bóng đá c1 và phải có một hành động bao gồm mộtChọnLệnh. Lệnh này xác định nội dung có thể nhìn thấy của chế độ xem. (Bản thân chế độ xem về cơ bản là một bảng giả không có lưu trữ.) Tốt nhất là coi một kèo bóng đá c1 như một chi tiết thực hiện. Trong khi chế độ xem có thể được xác định lại thông quaTạo hoặc thay thế kèo bóng đá c1 "_Return" là ..., sử dụng phong cách tốt hơnkèo bóng đá c1 hoặc thay thế Xem.

Bạn có thể kèo bóng đá c1 ảo giác về chế độ xem cập nhật bằng cách xác địnhKhi chèn, trên bản cập nhậtKhi xóakèo bóng đá c1 (hoặc bất kỳ tập hợp con nào đủ cho mục đích của bạn) để thay thế các hành động cập nhật trên chế độ xem bằng các bản cập nhật phù hợp trên các bảng khác. Nếu bạn muốn hỗ trợChèn trả vềvà cứ thế, sau đó chắc chắn đặt một phù hợpTrở vềmệnh đề vào từng kèo bóng đá c1 này.

Có một sự bắt nếu bạn cố gắng sử dụng các kèo bóng đá c1 có điều kiện để cập nhật chế độ xem phức tạp: Cóphảilà một người vô điều kiệnThay vào đókèo bóng đá c1 cho mỗi hành động bạn muốn cho phép trên chế độ xem. Nếu kèo bóng đá c1 là có điều kiện hoặc khôngThay vào đó, thì hệ thống vẫn sẽ từ chối các nỗ lực thực hiện hành động cập nhật, bởi vì nó nghĩ rằng cuối cùng nó có thể đang cố gắng thực hiện hành động trên bảng giả của chế độ xem trong một số trường hợp. Nếu bạn muốn xử lý tất cả các trường hợp hữu ích trong các kèo bóng đá c1 có điều kiện, hãy thêm một vô điều kiệnlàm thay thế không có gìkèo bóng đá c1 để đảm bảo rằng hệ thống hiểu rằng nó sẽ không bao giờ được gọi để cập nhật bảng giả. Sau đó làm cho các kèo bóng đá c1 có điều kiện khôngThay vào đó; Trong các trường hợp chúng được áp dụng, chúng thêm vào mặc địnhThay vào đó không có gìHành động. (Phương pháp này hiện không hoạt động để hỗ trợTrở vềTruy vấn, tuy nhiên.)

Lưu ý

Một chế độ xem đủ đơn giản để tự động cập nhật (xemkèo bóng đá c1 chế độ xem) Không yêu cầu kèo bóng đá c1 do người dùng tạo để cập nhật. Mặc dù bạn có thể tạo một kèo bóng đá c1 rõ ràng dù sao, chuyển đổi cập nhật tự động nói chung sẽ vượt trội hơn một kèo bóng đá c1 rõ ràng.

Một giải pháp thay thế khác đáng xem xét là sử dụngthay vìTriggers (xemkèo bóng đá c1 Trigger) thay cho các kèo bóng đá c1.

tham số

tên

Tên của một kèo bóng đá c1 để tạo. Điều này phải khác biệt với tên của bất kỳ kèo bóng đá c1 nào khác cho cùng một bảng. Nhiều kèo bóng đá c1 trên cùng một bảng và cùng loại sự kiện được áp dụng theo thứ tự tên chữ cái.

Sự kiện

Sự kiện này là một trong nhữngChọn, Chèn, Cập nhậthoặcXóa. Lưu ý rằng mộtChènchứatrên xung độtmệnh đề không thể được sử dụng trên các bảng cóChènhoặcCập nhậtkèo bóng đá c1. Thay vào đó xem xét sử dụng chế độ xem cập nhật.

Table_Name

Tên (tùy chọn Lược đồ theo trình độ) của bảng hoặc xem kèo bóng đá c1 áp dụng cho.

điều kiện

anySQLBiểu thức có điều kiện (trả vềBoolean). Biểu thức điều kiện không thể tham khảo bất kỳ bảng nào ngoại trừmới, và không thể chứa các hàm tổng hợp.

Thay vào đó

Thay vào đócho biết các lệnh phải được thực thithay vìlệnh gốc.

cũng

cũngcho biết các lệnh phải được thực thiNgoàiLệnh ban đầu.

nếu khôngcũngcũng khôngThay vào đóđược chỉ định,cũnglà mặc định.

lệnh

lệnh hoặc lệnh tạo nên hành động kèo bóng đá c1. Các lệnh hợp lệ làChọn, Chèn, Cập nhật, XóahoặcThông báo.

trongđiều kiệnlệnh, Tên bảng đặc biệtmớiCó thể được sử dụng để tham khảo các giá trị trong bảng được tham chiếu.mớicó giá trị trongKhi chèntrên cập nhậtCác kèo bóng đá c1 để tham khảo hàng mới được chèn hoặc cập nhật.có giá trị trongtrên cập nhậtKhi xóaCác kèo bóng đá c1 để tham khảo hàng hiện tại được cập nhật hoặc xóa.

ghi chú

Bạn phải là chủ sở hữu của bảng để tạo hoặc thay đổi kèo bóng đá c1 cho nó.

Trong kèo bóng đá c1 choChèn, Cập nhậthoặcXóaKhi xem, bạn có thể thêm ATrở vềmệnh đề phát ra các cột của chế độ xem. Mệnh đề này sẽ được sử dụng để tính toán các đầu ra nếu kèo bóng đá c1 được kích hoạt bởiChèn trả về, Cập nhật trả vềhoặcXóa trả vềLệnh tương ứng. Khi kèo bóng đá c1 được kích hoạt bởi một lệnh không cóTrở về, kèo bóng đá c1Trở vềmệnh đề sẽ bị bỏ qua. Việc triển khai hiện tại chỉ cho phép vô điều kiệnThay vào đókèo bóng đá c1 để chứaTrở về; Hơn nữa có thể có nhiều nhất mộtTrở vềĐiều khoản trong số tất cả các kèo bóng đá c1 cho cùng một sự kiện. (Điều này đảm bảo rằng chỉ có một ứng cử viênTrở vềmệnh đề được sử dụng để tính toán kết quả.)Trở vềTruy vấn trên chế độ xem sẽ bị từ chối nếu không cóTrở vềmệnh đề trong mọi kèo bóng đá c1 có sẵn.

Điều rất quan trọng là phải cẩn thận để tránh các kèo bóng đá c1 tròn. Ví dụ: mặc dù hai định nghĩa kèo bóng đá c1 sau đây được chấp nhận bởiPostgreSQL, TheChọnlệnh sẽ gây raPostgreSQLĐể báo cáo lỗi vì sự mở rộng đệ quy của một kèo bóng đá c1:

Tạo kèo bóng đá c1 "_return" như
    Trên chọn T1
    Làm thay thế
        Chọn * từ T2;

Tạo kèo bóng đá c1 "_return" như
    Trên chọn T2
    Làm thay thế
        Chọn * từ T1;

Chọn * từ T1;

Hiện tại, nếu hành động kèo bóng đá c1 chứaThông báolệnh, TheThông báoLệnh sẽ được thực thi vô điều kiện, nghĩa làThông báosẽ được cấp ngay cả khi không có bất kỳ hàng nào mà kèo bóng đá c1 nên áp dụng. Ví dụ: trong:

Tạo kèo bóng đá c1 thông báo_me như trên cập nhật cho mytable cũng thông báo cho mytable;

Cập nhật myTable set name = 'foo' trong đó id = 42;

mộtThông báoSự kiện sẽ được gửi trong thời gianCập nhật, Cho dù có bất kỳ hàng nào phù hợp với điều kiệnid = 42. Đây là một hạn chế thực hiện có thể được khắc phục trong các bản phát hành trong tương lai.

Tương thích

Tạo kèo bóng đá c1là APostgreSQLPhần mở rộng ngôn ngữ, cũng như toàn bộ hệ thống viết lại truy vấn.

Gửi hiệu chỉnh

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.