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

soi kèo bóng đá truoctranTạo KIỂU

tên

Tạo soi kèo bóng đá truoctran-Xác định soi kèo bóng đá truoctran dữ liệu mới

Synopsis

Tạo soi kèo bóng đá truoctrantênnhư
    (Attribution_name data_type[, ...])

Tạo soi kèo bóng đá truoctrantên(
    Input =input_function,
    Đầu ra =output_function[, nhận =recean_function]
    [, Send =send_function]
    [, InternalLight =InternalLights11370_11432Căn chỉnh]
    [, Lưu trữ =lưu trữ]
    [, Mặc định =mặc định]
    [, Phần tử =Element]
    [, Delimiter =Delimiter]
)

Mô tả

Tạo soi kèo bóng đá truoctranĐăng ký một kiểu dữ liệu mới để sử dụng trong cơ sở dữ liệu hiện tại. Người dùng xác định một soi kèo bóng đá truoctran trở thành chủ sở hữu của nó.

Nếu một tên lược đồ được đưa ra thì soi kèo bóng đá truoctran được tạo trong lược đồ cụ thể. Nếu không, nó được tạo ra trong lược đồ hiện tại. Tên soi kèo bóng đá truoctran phải khác với tên của bất kỳ soi kèo bóng đá truoctran hiện có hoặc miền trong cùng một lược đồ. (Vì các bảng đã liên kết soi kèo bóng đá truoctran dữ liệu, tên soi kèo bóng đá truoctran cũng phải khác với tên của bất kỳ bảng hiện có nào trong cùng một lược đồ.)

Các soi kèo bóng đá truoctran tổng hợp

Hình thức đầu tiên củaTạo soi kèo bóng đá truoctranTạo soi kèo bóng đá truoctran tổng hợp. soi kèo bóng đá truoctran tổng hợp được chỉ định bởi một Danh sách các tên thuộc tính và kiểu dữ liệu. Đây thực chất là Giống như soi kèo bóng đá truoctran hàng của bảng, nhưng sử dụngTạo soi kèo bóng đá truoctranTránh sự cần thiết phải tạo ra một thực tế Bảng khi tất cả những gì muốn là xác định một soi kèo bóng đá truoctran. MỘT soi kèo bóng đá truoctran tổng hợp độc lập là hữu ích vì soi kèo bóng đá truoctran trả về của một chức năng.

Các soi kèo bóng đá truoctran cơ sở

Mẫu thứ hai củaTạo soi kèo bóng đá truoctran13082_13283Tạo chức năng) trước khi xác định kiểu. Các chức năng hỗ trợinput_functionoutput_functionđược yêu cầu, trong khi Chức năngrecean_functionsend_function13624_13727

Theinput_functionChuyển đổi biểu diễn văn bản bên ngoài của soi kèo bóng đá truoctran cho bên trong Đại diện được sử dụng bởi các toán tử và các chức năng được xác định cho soi kèo bóng đá truoctran.output_functionThực hiện chuyển đổi ngược. Hàm đầu vào có thể là được tuyên bố là lấy một đối số của soi kèo bóng đá truoctrancStringhoặc khi thực hiện ba đối số của các soi kèo bóng đá truoctranCSTRING, oid, Số nguyên. Đối số đầu tiên là đầu vào văn bản dưới dạng chuỗi C, đối số thứ hai là soi kèo bóng đá truoctran phần tử trong trường hợp đây là soi kèo bóng đá truoctran mảng và thứ ba làTYPMODcủa cột đích, nếu được biết. Các Hàm đầu vào sẽ trả về một giá trị của chính soi kèo bóng đá truoctran dữ liệu. Hàm đầu ra có thể được tuyên bố là lấy một đối số soi kèo bóng đá truoctran dữ liệu mới hoặc khi thực hiện hai đối số trong đó thứ hai là soi kèo bóng đá truoctranOID. Đối số thứ hai lại là soi kèo bóng đá truoctran phần tử mảng cho các soi kèo bóng đá truoctran mảng. Đầu ra chức năng sẽ trả về soi kèo bóng đá truoctrancString.

Tùy chọnnhận_functionChuyển đổi soi kèo bóng đá truoctran của soi kèo bóng đá truoctran Đại diện nhị phân bên ngoài cho đại diện nội bộ. Nếu chức năng này không được cung cấp, soi kèo bóng đá truoctran không thể tham gia trong đầu vào nhị phân. Biểu diễn nhị phân nên được chọn để trở nên rẻ để chuyển đổi sang dạng nội bộ, trong khi hợp lý cầm tay. (Ví dụ: các soi kèo bóng đá truoctran dữ liệu số nguyên tiêu chuẩn sử dụng Mạng đơn đặt hàng byte là biểu diễn nhị phân bên ngoài, trong khi Đại diện nội bộ nằm trong byte gốc của máy thứ tự.) chức năng nhận sẽ thực hiện kiểm tra đầy đủ Để đảm bảo rằng giá trị là hợp lệ. Chức năng nhận có thể là được tuyên bố là lấy một đối số của soi kèo bóng đá truoctranNội bộhoặc hai đối số của các soi kèo bóng đá truoctranNội bộOID. Nó phải Trả về một giá trị của chính soi kèo bóng đá truoctran dữ liệu. (Đối số đầu tiên là một con trỏ tớiStringInfogiữ bộ đệm chuỗi byte nhận được; Đối số thứ hai tùy chọn là soi kèo bóng đá truoctran phần tử trong trường hợp đây là soi kèo bóng đá truoctran mảng.) Tương tự, không bắt buộcSend_FunctionChuyển đổi từ biểu diễn bên trong đến nhị phân bên ngoài đại diện. Nếu chức năng này không được cung cấp, soi kèo bóng đá truoctran Không thể tham gia vào đầu ra nhị phân. Hàm gửi có thể là được tuyên bố là lấy một đối số của kiểu dữ liệu mới hoặc Lấy hai đối số trong đó soi kèo bóng đá truoctran thứ hai là soi kèo bóng đá truoctranoid. Đối số thứ hai lại là phần tử mảng soi kèo bóng đá truoctran cho các soi kèo bóng đá truoctran mảng. Chức năng gửi phải trả về soi kèo bóng đá truoctranbytea.

16588_16965PostgreSQLĐầu tiên sẽ thấy tên của Kiểu dữ liệu mới là soi kèo bóng đá truoctran trả về của hàm đầu vào. Nó sẽ Tạo A"shell"soi kèo bóng đá truoctran, đó là chỉ đơn giản là một mục nhập trình giữ chỗ trong danh mục hệ thống và liên kết Định nghĩa chức năng đầu vào cho soi kèo bóng đá truoctran shell. Tương tự như vậy Các chức năng khác sẽ được liên kết với (hiện đã có) soi kèo bóng đá truoctran vỏ. Cuối cùng,Tạo soi kèo bóng đá truoctranThay thế mục nhập Shell bằng định nghĩa soi kèo bóng đá truoctran hoàn chỉnh và soi kèo bóng đá truoctran mới có thể được sử dụng.

Trong khi các chi tiết của biểu diễn nội bộ của soi kèo bóng đá truoctran mới chỉ được biết đến các chức năng I/O và các chức năng khác mà bạn tạo để làm việc với soi kèo bóng đá truoctran, có một số thuộc tính của Đại diện nội bộ phải được khai báo choPostgreSQL. Đầu tiên của những điều này làInternalLights. Dữ liệu cơ sở Các soi kèo bóng đá truoctran có thể được cố định độ dài, trong trường hợp đóInternalLightslà một số nguyên dương hoặc Độ dài biến, được biểu thị bằng cách cài đặtInternalLightsđếnBiến. (Bên trong, điều này được đại diện bởi cài đặtTyplenđến -1.) Nội bộ Biểu diễn của tất cả các soi kèo bóng đá truoctran có độ dài thay đổi phải bắt đầu với một Số nguyên 4 byte cho tổng chiều dài của giá trị này của kiểu.

Cờ tùy chọn18469_18484Cho biết rằng các giá trị của soi kèo bóng đá truoctran dữ liệu này được truyền theo giá trị, hơn là bằng cách tham khảo. Bạn không được vượt qua các soi kèo bóng đá truoctran giá trị có Biểu diễn bên trong lớn hơn kích thước củaDatumsoi kèo bóng đá truoctran (4 byte trên hầu hết các máy, 8 byte trên một vài).

TheCăn chỉnhTham số Chỉ định căn chỉnh lưu trữ cần thiết cho kiểu dữ liệu. Các Các giá trị được phép tương đương với căn chỉnh trên byte 1, 2, 4 hoặc 8 ranh giới. Lưu ý rằng các soi kèo bóng đá truoctran có độ dài biến phải có liên kết ít nhất 4, vì chúng nhất thiết phải chứaINT4là thành phần đầu tiên của họ.

Thelưu trữ19200_1929819316_19323được phép Các soi kèo bóng đá truoctran có độ dài cố định.)trơnChỉ định Dữ liệu đó của soi kèo bóng đá truoctran sẽ luôn được lưu trữ nội tuyến và không được nén.mở rộngChỉ định rằng Hệ thống trước tiên sẽ cố gắng nén một giá trị dữ liệu dài và sẽ chuyển giá trị ra khỏi hàng bảng chính nếu nó vẫn còn dài.bên ngoàicho phép giá trị chuyển ra khỏi bảng chính, nhưng hệ thống sẽ không cố gắng nén nó.chínhCho phép nén, Nhưng không khuyến khích di chuyển giá trị ra khỏi bảng chính. (Dữ liệu Các mục với chiến lược lưu trữ này vẫn có thể được chuyển ra khỏi bảng chính nếu không có cách nào khác để làm cho một hàng phù hợp, nhưng chúng sẽ được giữ trong bảng chính một cách tốt hơnmở rộngbên ngoàiMục.)

Giá trị mặc định có thể được chỉ định, trong trường hợp người dùng muốn các cột của kiểu dữ liệu mặc định là một cái gì đó khác với giá trị null. Chỉ định mặc định vớiMặc địnhTừ khóa. (Một mặc định như vậy có thể là được ghi đè bởi một rõ ràngmặc địnhmệnh đề được gắn vào một cột cụ thể.)

Để chỉ ra rằng một soi kèo bóng đá truoctran là một mảng, chỉ định soi kèo bóng đá truoctran của các phần tử mảng bằng cách sử dụngElementkhóa từ. Ví dụ: để xác định một loạt các số nguyên 4 byte (INT4), Chỉ địnhElement = int4. Thông tin chi tiết về các soi kèo bóng đá truoctran mảng xuất hiện bên dưới.

Để chỉ ra dấu phân cách được sử dụng giữa các giá trị trong Biểu diễn bên ngoài của các mảng thuộc soi kèo bóng đá truoctran này,Delimitercó thể được đặt thành một cụ thể tính cách. DELIMITER mặc định là dấu phẩy (,). Lưu ý rằng dấu phân cách được liên kết với soi kèo bóng đá truoctran phần tử mảng, không phải soi kèo bóng đá truoctran mảng.

Các soi kèo bóng đá truoctran mảng

Bất cứ khi nào một soi kèo bóng đá truoctran dữ liệu cơ sở do người dùng định nghĩa,PostgreSQLTự động tạo một soi kèo bóng đá truoctran mảng liên quan, có tên bao gồm Tên của soi kèo bóng đá truoctran cơ sở được chuẩn bị với một dấu gạch dưới. Trình phân tích cú pháp hiểu quy ước đặt tên này và dịch các yêu cầu cho Các cột soi kèo bóng đá truoctranfoo []thành yêu cầu cho soi kèo bóng đá truoctran_foo. Các điều khoản ngầm được tạo ra soi kèo bóng đá truoctran mảng là độ dài thay đổi và sử dụng đầu vào tích hợp và Chức năng đầu ramảng_inArray_out.

Bạn có thể hỏi một cách hợp lý lý do tại sao cóElementTùy chọn, nếu hệ thống làm cho đúng soi kèo bóng đá truoctran mảng tự động. Trường hợp duy nhất mà nó hữu ích cho sử dụngElement22241_22553têncho phép nó cấu thànhCharCác yếu tố cần truy cập cách này. A 2-Dđiểmsoi kèo bóng đá truoctran có thể cho phép hai số thành phần của nó được truy cập nhưđiểm [0]điểm [1]. Lưu ý rằng cơ sở này chỉ hoạt động cho các soi kèo bóng đá truoctran có độ dài cố định có Mẫu bên trong chính xác là một chuỗi có độ dài cố định giống hệt nhau Cánh đồng. Một soi kèo bóng đá truoctran độ dài biến có thể đăng ký phải có Biểu diễn nội bộ tổng quát được sử dụng bởimảng_inArray_out. Vì lý do lịch sử (tức là, điều này rõ ràng là sai nhưng nó Quá muộn để thay đổi nó), đăng ký mảng có độ dài cố định Các soi kèo bóng đá truoctran bắt đầu từ 0, thay vì từ một Mảng độ dài biến.

tham số

tên

Tên (tùy chọn Lược đồ theo trình độ) của một soi kèo bóng đá truoctran tạo.

Attribution_Name

Tên của một thuộc tính (cột) cho tổng hợp kiểu.

data_type

Tên của một soi kèo bóng đá truoctran dữ liệu hiện có để trở thành một cột của soi kèo bóng đá truoctran tổng hợp.

input_function

Tên của hàm chuyển đổi dữ liệu từ Biểu mẫu văn bản bên ngoài của soi kèo bóng đá truoctran sang dạng nội bộ của nó.

output_function

Tên của hàm chuyển đổi dữ liệu từ Biểu mẫu nội bộ của soi kèo bóng đá truoctran sang dạng văn bản bên ngoài của nó.

nhận_function

Tên của hàm chuyển đổi dữ liệu từ Biểu mẫu nhị phân bên ngoài của soi kèo bóng đá truoctran thành dạng nội bộ của nó.

Send_Function

Tên của hàm chuyển đổi dữ liệu từ Biểu mẫu nội bộ của soi kèo bóng đá truoctran sang dạng nhị phân bên ngoài của nó.

InternalLights

Một hằng số số chỉ định độ dài tính theo byte của Đại diện nội bộ của soi kèo bóng đá truoctran mới. Mặc định giả định là nó có độ dài thay đổi.

Căn chỉnh

Yêu cầu căn chỉnh lưu trữ của kiểu dữ liệu. Nếu như được chỉ định, nó phải làchar, INT2, INT4hoặcDouble25474_25501INT4.

lưu trữ

Chiến lược lưu trữ cho kiểu dữ liệu. Nếu được chỉ định, Phải làtrơn, bên ngoài, mở rộng,, hoặcchính; Mặc định làtrơn.

Mặc định

Giá trị mặc định cho kiểu dữ liệu. Nếu điều này bị bỏ qua, mặc định là null.

Element

soi kèo bóng đá truoctran được tạo là một mảng; Điều này chỉ định soi kèo bóng đá truoctran của các phần tử mảng.

Delimiter

ký tự phân cách được sử dụng giữa các giá trị trong mảng được làm từ soi kèo bóng đá truoctran này.

Ghi chú

Tên soi kèo bóng đá truoctran do người dùng xác định không thể bắt đầu bằng dấu gạch dưới tính cách (_) và chỉ có thể là 62 ký tự dài (hoặc nói chungĐược đặt tên- 2, thay vìĐược đặt tên- 1 ký tự cho phép khác tên). Tên tên bắt đầu với dấu gạch dưới được dành cho Tên soi kèo bóng đá truoctran mảng được tạo bên trong.

inPostgreSQLPhiên bản trước 7.3, theo thông lệ để tránh tạo soi kèo bóng đá truoctran vỏ bằng cách thay thế các tham chiếu chuyển tiếp của các hàm đến tên soi kèo bóng đá truoctran với Đồ giả giả danhOpaque. ThecStringĐối số và kết quả cũng phải được tuyên bố làOpaqueTrước 7.3. ĐẾN Hỗ trợ tải các tệp kết xuất cũ,Tạo KIỂUSẽ chấp nhận các chức năng được khai báo bằng cách sử dụngOpaque, nhưng nó sẽ đưa ra một thông báo và thay đổi Tuyên bố của chức năng để sử dụng đúng soi kèo bóng đá truoctran.

27704_27714

Ví dụ này tạo ra một soi kèo bóng đá truoctran tổng hợp và sử dụng nó trong a Định nghĩa chức năng:

Tạo soi kèo bóng đá truoctran compfoo AS (F1 int, F2 văn bản);
Tạo chức năng getfoo () trả về setof compfoo dưới dạng
  'Chọn Fooid, Fooname từ Foo' Ngôn ngữ SQL;

Ví dụ này tạo ra kiểu dữ liệu cơ sởBoxVà sau đó sử dụng soi kèo bóng đá truoctran trong định nghĩa bảng:

Tạo hộp soi kèo bóng đá truoctran (
    InterlitalLight = 16,
    Input = my_box_in_function,
    Đầu ra = my_box_out_function
);

Tạo bảng myboxes (
    ID Số nguyên,
    Hộp mô tả
);

Nếu cấu trúc bên trong củaBoxlà một mảng bốnfloat4Các yếu tố, chúng ta có thể Thay vào đó sử dụng

Tạo hộp soi kèo bóng đá truoctran (
    InterlitalLight = 16,
    Input = my_box_in_function,
    Output = my_box_out_function,
    Phần tử = float4
);

28650_28784

Ví dụ này tạo ra một soi kèo bóng đá truoctran đối tượng lớn và sử dụng nó trong a Định nghĩa bảng:

Tạo soi kèo bóng đá truoctran bigobj (
    Input = lo_filein, output = lo_fileout,
    InternalLights = Biến
);
Tạo bảng BIG_OBJS (
    ID Số nguyên,
    obj bigobj
);

Các ví dụ khác, bao gồm các chức năng đầu vào và đầu ra phù hợp, đang ởChương 33.

Tương thích

thisTạo soi kèo bóng đá truoctranLệnh làPostgreSQLPhần mở rộng. Có mộtTạo soi kèo bóng đá truoctranCâu lệnh trong SQL99 đó là khá khác nhau về chi tiết.