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à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ùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

Tạo tỷ lệ kèo bóng đá

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

Synopsis

Tạo [hoặc thay thế] tỷ lệ kèo bóng đátênnhư trênSự kiệnđếnTable_Name[trong đóđiều kiện]lệnh| (lệnh;lệnh...)WHEREsự kiệncó thể là một trong số:Chọn | Chèn |

Mô tả

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

ThePostgreSQLHệ thống tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá 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.Thay vào đótỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá được sử dụng để thực hiện các chế độ xem SQL là tốt.Chương 40.

Hiện tại,ON CHỌNtỷ lệ kèo bóng đá phải vô điều kiệnThay vào đótỷ lệ kèo bóng đá và phải có hành động bao gồm mộtChọnLệnh. Do đó, mộtON CHỌNtỷ lệ kèo bóng đá biến bảng thành chế độ xem, có nội dung có thể nhìn thấy là các hàng được trả về bởi tỷ lệ kèo bóng đáChọnLệnh thay vì bất cứ điều gì đã được lưu trữ trong bảng (nếu có). Nó được coi là phong cách tốt hơn để viết mộtTạo chế độ xemlệnh hơn là tạo một bảng thật và xác định mộttrên Chọntỷ lệ kèo bóng đá cho nó.

Bạn có thể tạo ảo giác về chế độ xem cập nhật bằng cách xác địnhtrên chèn, Khi cập nhậtKhi xóatỷ lệ kèo bóng đá (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 tỷ lệ kèo bóng đá này.

Có một sự bắt nếu bạn cố gắng sử dụng các tỷ lệ kèo bóng đá 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 đótỷ lệ kèo bóng đá cho mỗi hành động bạn muốn cho phép trên chế độ xem. Nếu tỷ lệ kèo bóng đá 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ể 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 tỷ lệ kèo bóng đá có điều kiện, hãy thêm một vô điều kiệnlàm thay thế không có gìtỷ lệ kèo bóng đá để đả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 tỷ lệ kèo bóng đá 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 (xemTạo chế độ xem) Không yêu cầu tỷ lệ kèo bóng đá do người dùng tạo để cập nhật. Mặc dù bạn có thể tạo một tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá rõ ràng.

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

tham số

tên

Tên của một tỷ lệ kèo bóng đá để tạo. Điều này phải khác biệt với tên của bất kỳ tỷ lệ kèo bóng đá nào khác cho cùng một bảng.

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ặcXÓA BỎtỷ lệ kèo bóng đá. 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 tỷ lệ kèo bóng đá áp dụng cho.

điều kiện

bất kỳSQLBiể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ũngNorThay 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 tỷ lệ kèo bóng đá. 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ị trongtrên chèntrên cập nhậttỷ lệ kèo bóng đá tham khảo hàng mới được chèn hoặc cập nhật.18509_18524trên cập nhậtKhi xóaCác tỷ lệ kèo bóng đá để 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 tỷ lệ kèo bóng đá cho nó.

Trong một tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá đượ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 tỷ lệ kèo bóng đá được kích hoạt bởi một lệnh không cóTrở về, tỷ lệ kèo bóng đáTrở 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 đótỷ lệ kèo bóng đá để 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 tỷ lệ kèo bóng đá 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 bất kỳ tỷ lệ kèo bóng đá có sẵn nào.

Điều rất quan trọng là phải cẩn thận để tránh các tỷ lệ kèo bóng đá tròn. Ví dụ: mặc dù hai định nghĩa tỷ lệ kèo bóng đá 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 tỷ lệ kèo bóng đá:

Tạo tỷ lệ kèo bóng đá "_return" như

Hiện tại, nếu hành động tỷ lệ kèo bóng đá 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 ban hành ngay cả khi không có bất kỳ hàng nào mà tỷ lệ kèo bóng đá nên áp dụng. Ví dụ: trong:

Tạo tỷ lệ kèo bóng đá thông báo_me như khi cập nhật cho mytable, cũng thông báo cho mytable;

OneThô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 tỷ lệ kèo bóng đálà APostgreSQLPhần mở rộng ngôn ngữ, cũng như toàn bộ hệ thống viết lại truy vấn.