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
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ế.

35.2. ThePostgreSQLtỷ lệ kèo bóng đá hệ thống

PostgreSQLKiểu dữ liệu là chia thành các tỷ lệ kèo bóng đá cơ sở, tỷ lệ kèo bóng đá tổng hợp, miền và tỷ lệ kèo bóng đá giả.

35.2.1. Căn cứ tỷ lệ kèo bóng đá

Các tỷ lệ kèo bóng đá cơ sở là những tỷ lệ kèo bóng đá, nhưINT4, đó là được triển khai dưới mức củaSQLNgôn ngữ (thường bằng ngôn ngữ cấp thấp chẳng hạn như c). Chúng thường tương ứng với những gì thường được gọi là Kiểu dữ liệu trừu tượng.PostgreSQLchỉ có thể hoạt động trên các tỷ lệ kèo bóng đá đó thông qua các chức năng do người dùng và chỉ hiểu hành vi của các tỷ lệ kèo bóng đá đó trong phạm vi mà người dùng mô tả chúng. Các tỷ lệ kèo bóng đá cơ sở được chia nhỏ hơn nữa vào các tỷ lệ kèo bóng đá vô hướng và mảng. Đối với mỗi tỷ lệ kèo bóng đá vô hướng, một tỷ lệ kèo bóng đá mảng được tạo tự động có thể giữ kích thước biến mảng tỷ lệ kèo bóng đá vô hướng đó.

35.2.2. Các tỷ lệ kèo bóng đá tổng hợp

Các tỷ lệ kèo bóng đá tổng hợp hoặc tỷ lệ kèo bóng đá hàng, được tạo bất cứ khi nào người dùng Tạo một bảng. Nó cũng có thể sử dụngTạo tỷ lệ kèo bóng đáĐể xác định A"độc lập"tỷ lệ kèo bóng đá tổng hợp không có liên quan bàn. Một tỷ lệ kèo bóng đá tổng hợp chỉ đơn giản là một danh sách các tỷ lệ kèo bóng đá có liên quan Tên trường. Giá trị của tỷ lệ kèo bóng đá tổng hợp là một hàng hoặc bản ghi của Giá trị trường. Người dùng có thể truy cập các trường thành phần từSQLTruy vấn. Tham khảoPhần 8.16Để biết thêm thông tin về composite các tỷ lệ kèo bóng đá.

35.2.3. Miền

12276_12510

miền có thể được tạo bằng cách sử dụngSQLlệnhTạo tên miền. Sáng tạo và sử dụng của họ không được thảo luận trong chương này.

35.2.4. Pseudo-Types

Có một vài"Pseudo-Types"cho Mục đích đặc biệt. Các tỷ lệ kèo bóng đá giả không thể xuất hiện dưới dạng các cột của các bảng hoặc các thuộc tính của các tỷ lệ kèo bóng đá tổng hợp, nhưng chúng có thể được sử dụng để khai báo Các tỷ lệ kèo bóng đá đối số và kết quả của các chức năng. Điều này cung cấp a cơ chế trong hệ thống tỷ lệ kèo bóng đá để xác định các lớp đặc biệt của chức năng.Bảng 8-24Liệt kê các tỷ lệ kèo bóng đá giả hiện có.

35.2.5. Các tỷ lệ kèo bóng đá đa hình

Năm tỷ lệ kèo bóng đá giả quan tâm đặc biệt làAnyEuity, AnyArray, Anynonarray, AnyenumAnyrange, được gọi chung làCác tỷ lệ kèo bóng đá đa hình. Bất kỳ chức năng được tuyên bố Sử dụng các tỷ lệ kèo bóng đá này được cho làđa hình chức năng. Một hàm đa hình có thể hoạt động trên nhiều Các tỷ lệ kèo bóng đá dữ liệu, với (các) tỷ lệ kèo bóng đá dữ liệu cụ thể được xác định bởi Các tỷ lệ kèo bóng đá dữ liệu thực sự được truyền cho nó trong một cuộc gọi cụ thể.

Các đối số và kết quả đa hình được gắn với nhau và là đã quyết định đến một tỷ lệ kèo bóng đá dữ liệu cụ thể khi một truy vấn gọi một đa hình chức năng được phân tích cú pháp. Mỗi vị trí (đối số hoặc giá trị trả về) được tuyên bố làAnyEuityđược phép có bất kỳ Kiểu dữ liệu thực tế cụ thể, nhưng trong bất kỳ cuộc gọi nào, tất cả đều phải Thecùngtỷ lệ kèo bóng đá thực tế. Mỗi vị trí được khai báo làAnyArraycó thể có Bất kỳ tỷ lệ kèo bóng đá dữ liệu mảng nào, nhưng tương tự tất cả chúng phải là cùng một tỷ lệ kèo bóng đá. Và tương tự, các vị trí được khai báo làAnyrangeTất cả phải là cùng tỷ lệ kèo bóng đá phạm vi. Hơn nữa, nếu có Vị trí được khai báoAnyArrayvà những người khác Tuyên bốAnyEuity, tỷ lệ kèo bóng đá mảng thực tế trong TheAnyArrayvị trí phải là một mảng có các phần tử là cùng một tỷ lệ kèo bóng đá xuất hiện trongAnyEuityVị trí. Tương tự, nếu có vị trí Tuyên bốAnyrangevà những người khác được tuyên bốAnyEuity, tỷ lệ kèo bóng đá phạm vi thực tế trongAnyrangeVị trí phải là một phạm vi có tỷ lệ kèo bóng đá phụ là cùng tỷ lệ kèo bóng đá xuất hiện trongAnyEuityVị trí.Anynonarrayđược xử lý giống hệt nhưAnyEuity,, nhưng thêm vào các ràng buộc bổ sung rằng tỷ lệ kèo bóng đá thực tế không được một tỷ lệ kèo bóng đá mảng.Anyenumđược xử lý chính xác Giống nhưAnyEuity, nhưng thêm vào ràng buộc rằng tỷ lệ kèo bóng đá thực tế phải là một tỷ lệ kèo bóng đá enum.

Do đó, khi có nhiều hơn một vị trí đối số được khai báo với một tỷ lệ kèo bóng đá đa hình, hiệu ứng ròng là chỉ có sự kết hợp nhất định của các tỷ lệ kèo bóng đá đối số thực tế được cho phép. Ví dụ: một chức năng được tuyên bố làbằng (AnyEuity, AnyEuity)Sẽ lấy bất kỳ hai giá trị đầu vào nào, miễn là chúng giống nhau Kiểu dữ liệu.

Khi giá trị trả về của hàm được khai báo là đa hình tỷ lệ kèo bóng đá, phải có ít nhất một vị trí đối số cũng đa hình và kiểu dữ liệu thực tế được cung cấp làm đối số Xác định tỷ lệ kèo bóng đá kết quả thực tế cho cuộc gọi đó. Ví dụ, nếu Đã không có cơ chế đăng ký mảng, người ta có thể Xác định một chức năng thực hiện đăng ký làĐăng ký (AnyArray, Integer) trả về AnyEuity. Tuyên bố này hạn chế đối số đầu tiên thực tế là một tỷ lệ kèo bóng đá mảng và cho phép trình phân tích cú pháp suy ra tỷ lệ kèo bóng đá kết quả chính xác từ tỷ lệ kèo bóng đá đối số đầu tiên thực tế. Một ví dụ khác là một chức năng được khai báo là16619_16648Sẽ chỉ chấp nhận các mảng của các tỷ lệ kèo bóng đá enum.

Lưu ý rằngAnynonarrayAnyenumKhông đại diện cho các biến tỷ lệ kèo bóng đá riêng biệt; họ là cùng tỷ lệ kèo bóng đá vớiAnyEuity, chỉ với một ràng buộc bổ sung. Ví dụ: khai báo một hàm làf (AnyEuity, Anyenum)tương đương với Tuyên bố nó làf (Anyenum, Anyenum): cả hai Đối số thực tế phải là cùng tỷ lệ kèo bóng đá enum.

Một hàm variadic (một người dùng một số lượng đối số, Như trongPhần 35.4.5) Có thể đa hình: Điều này được thực hiện bằng cách tuyên bố tham số cuối cùng của nó làVariadic AnyArray. Cho các mục đích phù hợp đối số và Xác định tỷ lệ kèo bóng đá kết quả thực tế, một hàm như vậy hoạt động Giống như khi bạn đã viết số thích hợp của17599_17612tham số.