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

8.19. Loại định kèo chấp bóng đá hôm nay#

Định kèo chấp bóng đá hôm nay (OID) được sử dụng bên trong bởiPostgreSQLlàm khóa chính cho các bảng hệ thống khác nhau. Kiểuoidđại diện cho một định kèo chấp bóng đá hôm nay. Ngoài ra còn có một số loại bí danh choOID, mỗi cái tênregcái gì đó. Bảng 8.26Hiển thị tổng quan.

TheOIDkèo chấp bóng đá hôm nay hiện được triển khai dưới dạng số nguyên bốn byte không dấu. Do đó, nó không đủ lớn để cung cấp tính duy nhất toàn cơ sở dữ liệu trong cơ sở dữ liệu lớn hoặc thậm chí trong các bảng riêng lẻ lớn.

TheoidBản thân kèo chấp bóng đá hôm nay có một vài thao tác ngoài so sánh. Tuy nhiên, nó có thể được chuyển đến số nguyên, và sau đó thao tác bằng các toán tử số nguyên tiêu chuẩn.

Các loại bí kèo chấp bóng đá hôm nay OID không có hoạt động của riêng chúng ngoại trừ các thói quen đầu vào và đầu ra chuyên dụng. Các thói quen này có thể chấp nhận và hiển thị tên biểu tượng cho các đối tượng hệ thống, thay vì giá trị số thô loạioidSẽ sử dụng. Các loại bí kèo chấp bóng đá hôm nay cho phép tra cứu đơn giản các giá trị OID cho các đối tượng.PG_Attributionhàng liên quan đến bảngmytable, người ta có thể viết:

Chọn * từ pg_attribut

thay vì:

Chọn * từ PG_Attribution

Trong khi điều đó không có vẻ tệ đến thế, nó vẫn bị đơn giản hóa. Một lựa chọn phụ phức tạp hơn nhiều sẽ là cần thiết để chọn đúng oid nếu có nhiều bảng có tênMyTableTrong các lược đồ khác nhau. TheRegClassBộ chuyển đổi đầu vào xử lý việc tra cứu bảng theo cài đặt đường dẫn lược đồ và do đó nó thực hiệnĐúng vậyHàngTự động. Tương tự, việc đúc một bảng OID thànhRegClasslà tiện dụng cho màn hình biểu kèo chấp bóng đá hôm nay của OID số.

Bảng 8.26. Loại định kèo chấp bóng đá hôm nay

tên Tài liệu tham khảo Mô tả Ví dụ về giá trị
oid bất kỳ Định kèo chấp bóng đá hôm nay số 564182
RegClass pg_ class Tên quan hệ PG_TYPE
RegCollation pg_collation Tên đối chiếu "POSIX"
Regconfig PG_TS_CONFIG Cấu hình tìm kiếm văn bản Tiếng Anh
Regdictionary PG_TS_DICT Từ điển tìm kiếm văn bản đơn giản
Regnamespace PG_Namespace Tên không gian tên pg_catalog
Regoper pg_operator tên toán tử +
Regoperator pg_operator toán tử với các kèo chấp bóng đá hôm nay đối số *(số nguyên, số nguyên)hoặc-(không, số nguyên)
RegProc PG_PROC tên chức năng Sum
RegProcedure PG_PROC Hàm với các kèo chấp bóng đá hôm nay đối số sum (int4)
reprole pg_authid Tên vai Smithee
regtype PG_TYPE Tên kèo chấp bóng đá hôm nay dữ liệu Số nguyên

Tất cả các loại bí kèo chấp bóng đá hôm nay OID cho các đối tượng được nhóm theo không gian tên chấp nhận các tên đủ điều kiện Schema và sẽ hiển thị tên đủ điều kiện lược đồ trên đầu ra nếu đối tượng không được tìm thấy trong đường dẫn tìm kiếm hiện tại mà không đủ điều kiện. Ví dụ,myschema.mytableđầu vào được chấp nhận choRegClass(nếu có một bảng như vậy). Giá trị đó có thể là đầu ra làmyschema.mytablehoặc chỉMyTable, tùy thuộc vào đường dẫn tìm kiếm hiện tại. TheRegProcRegoperCác loại bí kèo chấp bóng đá hôm nay sẽ chỉ chấp nhận các tên đầu vào duy nhất (không quá tải), vì vậy chúng được sử dụng hạn chế; cho hầu hết các mục đích sử dụngRegProcedurehoặcRegoperatorphù hợp hơn. VìRegoperator, toán tử Unary được xác định bằng cách viếtKhôngĐối với toán hạng không sử dụng.

Các chức năng đầu vào cho các loại này cho phép khoảng trắng giữa các mã thông báo và sẽ gấp các chữ cái trên trường hợp chữ thường, ngoại trừ trong trích dẫn gấp đôi; Điều này được thực hiện để làm cho các quy tắc cú pháp tương tự như cách viết tên đối kèo chấp bóng đá hôm nay bằng SQL.foo(với trường hợp trênf) Lấy hai đối số số nguyên có thể được nhập dưới dạng' "Foo" (int, integer) ':: regrocedure. Đầu ra sẽ trông giống như"foo" (số nguyên, số nguyên). Cả tên hàm và tên kèo chấp bóng đá hôm nay đối số cũng có thể được định mức lược đồ.

nhiều người tích hợpPostgreSQLCác chức năng chấp nhận OID của bảng hoặc một loại đối kèo chấp bóng đá hôm nay cơ sở dữ liệu khác và để thuận tiện được tuyên bố là lấyRegClass(hoặc loại bí kèo chấp bóng đá hôm nay oid thích hợp). Điều này có nghĩa là bạn không phải tra cứu OID của đối tượng, nhưng chỉ có thể nhập tên của nó dưới dạng một chuỗi theo nghĩa đen.NextVal (RegClass)hàm có OID của mối quan hệ trình tự, vì vậy bạn có thể gọi nó như thế này:

NextVal ('foo')hoạt động theo trình tựfoonextVal ('foo')giống như trênnextVal ('"foo"')hoạt động trên chuỗifoonextVal ('myschema.foo')hoạt động trênmyschema.foonextVal ('"myschema" .foo')​​giống như trênNextVal ('foo')Tìm kiếm đường dẫn tìm kiếm chofoo

Lưu ý

Khi bạn viết đối số của một hàm như một chuỗi chữ không được trang trí, nó trở thành một hằng số của kèo chấp bóng đá hôm nayRegClass(hoặc loại thích hợp). Vì đây thực sự chỉ là một OID, nó sẽ theo dõi đối kèo chấp bóng đá hôm nay được xác định ban đầu mặc dù sau đó đổi tên, phân công lại lược đồ, v.v ... Điều nàyHồiràng buộc sớmHồiHành vi thường được mong muốn đối với các tham chiếu đối kèo chấp bóng đá hôm nay trong các mặc định và chế độ xem. Nhưng đôi khi bạn có thể muốnHồiBinding muộnTrong đó tham chiếu đối kèo chấp bóng đá hôm nay được giải quyết tại thời gian chạy. Để có được hành vi liên kết muộn, buộc hằng số phải được lưu trữ dưới dạngTexthằng số thay vìRegClass:

nextVal ('foo' :: text)foođược nhìn lên thời gian chạy

Theto_RegClass ()Hàm và anh chị em của nó cũng có thể được sử dụng để thực hiện tra cứu thời gian chạy. Nhìn thấyBảng 9.72.

Một ví dụ thực tế khác về việc sử dụngRegClasslà tìm kiếm oid của một bảng được liệt kê trongthông tin_schemaLượt xem, không cung cấp trực tiếp OID như vậy. Ví dụ, người ta có thể muốn gọipg_relation_size ()hàm, yêu cầu bảng oid. Đưa các quy tắc trên vào tài khoản, cách chính xác để làm điều đó là

Chọn Table_Schema, Table_Name,

TheQUOTE_IDENT ()Chức năng sẽ chăm sóc các trình điều khiển kép các định kèo chấp bóng đá hôm nay khi cần thiết. Có vẻ dễ dàng hơn

Chọn PG_RELATION_SIZE (TABLE_NAME)

không được khuyến nghị, vì nó sẽ thất bại đối với các bảng nằm ngoài đường dẫn tìm kiếm của bạn hoặc có tên yêu cầu trích dẫn.

Một thuộc tính bổ sung của hầu hết các loại bí kèo chấp bóng đá hôm nay OID là tạo ra các phụ thuộc. Nếu một hằng số của một trong các loại này xuất hiện trong một biểu thức được lưu trữ (chẳng hạn như biểu thức hoặc chế độ xem mặc định cột), nó sẽ tạo ra một sự phụ thuộc vào đối tượng được tham chiếu.nextVal ('my_seq' :: regClass), PostgreSQLHiểu rằng biểu thức mặc định phụ thuộc vào chuỗimy_seq, do đó hệ thống sẽ không để chuỗi bị hủy mà không xóa biểu thức mặc định trước. Sự thay thế củanextVal ('my_seq' :: text)không tạo ra sự phụ thuộc. (Revolelà một ngoại lệ cho thuộc tính này. Hằng số kèo chấp bóng đá hôm nay này không được phép trong các biểu thức được lưu trữ.)

Một loại định kèo chấp bóng đá hôm nay khác được sử dụng bởi hệ thống làXIDhoặc giao dịch (viết tắtXACT) định kèo chấp bóng đá hôm nay. Đây là loại dữ liệu của các cột hệ thốngxminxmax. Định kèo chấp bóng đá hôm nay giao dịch là số lượng 32 bit.XID8được sử dụng. Không giống nhưXIDGiá trị,XID8Giá trị tăng nghiêm ngặt một cách đơn điệu và không thể được sử dụng lại trong vòng đời của cụm cơ sở dữ liệu. Nhìn thấyPhần 74.1Để biết thêm chi tiết.

Loại định kèo chấp bóng đá hôm nay thứ ba được sử dụng bởi hệ thống làCIDhoặc Định kèo chấp bóng đá hôm nay lệnh. Đây là loại dữ liệu của các cột hệ thốngcminCMAX. Số nhận dạng lệnh cũng là số lượng 32 bit.

Một loại định kèo chấp bóng đá hôm nay cuối cùng được sử dụng bởi hệ thống làtidhoặc định kèo chấp bóng đá hôm nay tuple (định kèo chấp bóng đá hôm nay hàng). Đây là kiểu dữ liệu của cột hệ thốngCTID. ID tuple là một cặp (số khối, chỉ mục tple trong khối) xác định vị trí vật lý của hàng trong bảng của nó.

(Các cột hệ thống được giải thích thêm trongPhần 5.5.)

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ớpMẫu nàyĐể báo cáo vấn đề tài liệu.