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 choPostgreSQL : 문서 : 17 : 토토 사이트 추천 생성Phiê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 KIỂU

tên

Tạo 스포츠 토토 결과i-Xác định 스포츠 토토 결과i dữ liệu mới

Synopsis

Tạo 스포츠 토토 결과itênnhư
    (Attribution_name data_type[, ...])

Tạo 스포츠 토토 결과itên(
    Input =input_function,
    Đầu ra =output_function[, nhận =recean_function]
    [, Send =send_function]
    [, Phân tích =Phân tích_Function]
    [, InternalLight =InternalLights| Biến]
    [, PassedByValue]
    [, Căn chỉnh =Că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 스포츠 토토 결과iĐă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 loại trở thành chủ sở hữu của nó.

Nếu một tên lược đồ được đưa ra thì loại đượ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 loại phải khác với tên của bất kỳ loại hiện có hoặc miền trong cùng một lược đồ. (Vì các bảng đã liên kết loại dữ liệu, tên loại 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 스포츠 토토 결과i tổng hợp

Hình thức đầu tiên củaTạo 스포츠 토토 결과iTạo 스포츠 토토 결과i tổng hợp. Loại 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ư loại hàng của bảng, nhưng sử dụngTạo 스포츠 토토 결과iTrá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 스포츠 토토 결과i. MỘT 스포츠 토토 결과i tổng hợp độc lập là hữu ích như đối số hoặc trở lại 스포츠 토토 결과i chức năng.

Các 스포츠 토토 결과i cơ sở

Hình thức thứ hai củaTạo 스포츠 토토 결과iTạo một 스포츠 토토 결과i cơ sở mới (스포츠 토토 결과i vô hướng). Các tham số có thể xuất hiện theo bất kỳ thứ tự nào, không chỉ được minh họa ở trên và hầu hết là tùy chọn. Bạn phải đăng ký hai hoặc nhiều chức năng (sử dụngTạ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ăngnhận_function, Send_FunctionPhân tích_Functionlà tùy chọn. Nói chung là Các chức năng này phải được mã hóa trong C hoặc một mức độ thấp khác ngôn ngữ.

Theinput_functionChuyển đổi biểu diễn văn bản bên ngoài của loại 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 loại.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 loạicStringhoặc khi thực hiện ba đối số của các 스포츠 토토 결과icString, 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à loại phần tử Oid trong trường hợp đây là loại mảng (hoặc OID của chính loại cho loại tổng hợp) và thứ ba làTYPMODcủa cột đích, nếu được biết (-1 sẽ được thông qua nếu không). Chức năng đầu vào sẽ trả về một Giá trị của chính loại dữ liệu. Hàm đầu ra 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 đó loại thứ hai là loạioid. Đối số thứ hai lại là phần tử mảng Loại OID cho các loại mảng hoặc loại OID cho các loại tổng hợp. Chức năng đầu ra sẽ trả về loạicString.

Tùy chọnrecean_functionChuyển đổi loại Đạ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, loại 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 loại 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 loạiNội bộhoặc hai đối số của các 스포츠 토토 결과iNội bộoid. Nó phải Trả về một giá trị của chính loại 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à loại phần tử oid trong trường hợp đây là loại mảng hoặc loại sở hữu oid cho một loại tổng hợp.) Tương tự, tùy chọnsend_functionChuyển đổi từ Đại diện nội bộ cho đại diện nhị phân bên ngoài. Nếu chức năng này không được cung cấp, 스포츠 토토 결과i không thể tham gia Trong đầu ra nhị phân. Chức năng gửi có thể được tuyên bố là lấy một đối số của kiểu dữ liệu mới hoặc khi thực hiện hai đối số trong đó 스포츠 토토 결과i thứ hai là 스포츠 토토 결과iOID. Các Đối số thứ hai một lần nữa là loại phần tử mảng OID cho mảng loại hoặc loại OID cho các loại tổng hợp. Chức năng gửi Phải trả về loạibytea.

Bạn nên tự hỏi làm thế nào đầu vào và Các chức năng đầu ra có thể được khai báo là có kết quả hoặc đối số thuộc loại mới, khi chúng phải được tạo ra trước khi Loại có thể được tạo ra. Câu trả lời là chức năng đầu vào phải được tạo trước, sau đó là hàm đầu ra (và I/O nhị phân chức năng nếu muốn) và cuối cùng là kiểu dữ liệu.PostgreSQLTrước tiên sẽ xem tên của Kiểu dữ liệu mới là loại trả về của hàm đầu vào. Nó sẽ Tạo A"shell"Loại, đó 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 loại 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ó) loại vỏ. Cuối cùng,Tạo 스포츠 토토 결과iThay thế mục nhập Shell bằng định nghĩa loại hoàn chỉnh và loại mới có thể được sử dụng.

Tùy chọnPhân tích_FunctionThực hiện loại cụ thể Bộ sưu tập thống kê cho các cột của kiểu dữ liệu. Theo mặc định,Phân tíchSẽ cố gắng thu thập Thống kê sử dụng 스포츠 토토 결과i"bằng""Ít hơn"18230_18524Nội bộ, và trả lại ABooleanKết quả. API chi tiết để phân tích Các chức năng xuất hiện trongsrc/bao gồm/lệnh/chân không.h.

Trong khi các chi tiết của biểu diễn nội bộ của loại 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 loại, 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 스포츠 토토 결과i 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 loại 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ọnPassedByValuechỉ ra rằng các giá trị của 스포츠 토토 결과i 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 스포츠 토토 결과i giá trị có Biểu diễn bên trong lớn hơn kích thước củaDatumLoại (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 loại 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ữTham số cho phép Lựa chọn các chiến lược lưu trữ cho các loại dữ liệu có độ dài thay đổi. (Chỉ mộttrơnđược phép Các 스포츠 토토 결과i có độ dài cố định.)trơnChỉ định Dữ liệu đó của loại sẽ luôn được lưu trữ nội tuyến và không được nén.Mở rộngChỉ định điều đó 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 스포츠 토토 결과i là một mảng, chỉ định 스포츠 토토 결과i 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 스포츠 토토 결과t các số nguyên 4 byte (INT4), Chỉ địnhElement = int4. Thông tin chi tiết về các loại 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 loại 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 스포츠 토토 결과i phần tử mảng, không phải 스포츠 토토 결과i mảng.

Các 스포츠 토토 결과i mảng

Bất cứ khi nào một 스포츠 토토 결과i dữ liệu cơ sở do người dùng xác định,PostgreSQLTự động tạo một loại mảng liên quan, có tên bao gồm Tên của loại 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 loạifoo []thành yêu cầu cho 스포츠 토토 결과i_foo. Các điều khoản ngầm được tạo ra Loại 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 스포츠 토토 결과i mảng tự động. Trường hợp duy nhất mà nó hữu ích cho sử dụngElementlà khi bạn đang làm một loại có độ dài cố định xảy ra là một mảng của một Số thứ giống hệt nhau và bạn muốn cho phép những thứ này được truy cập trực tiếp bằng cách đăng ký, ngoài Bất cứ hoạt động nào bạn dự định cung cấp cho loại dưới dạng trọn. Ví dụ: gõtê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ểm스포츠 토토 결과i 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 loại 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 loại độ 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 loại 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 스포츠 토토 결과i 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 스포츠 토토 결과i dữ liệu hiện có để trở thành một cột của 스포츠 토토 결과i 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 loại 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 loại 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 loại 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 loại sang dạng nhị phân bên ngoài của nó.

Phân tích_Function

Tên của một hàm thực hiện thống kê Phân tích cho kiểu dữ liệu.

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 스포츠 토토 결과i 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ặcDouble; Mặc định làINT4.

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

스포츠 토토 결과i được tạo là một mảng; Điều này chỉ định 스포츠 토토 결과i 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ừ 스포츠 토토 결과i này.

Ghi chú

Tên 스포츠 토토 결과i 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 loại mảng được tạo bên trong.

inPostgreSQLPhiên bản trước 7.3, theo thông lệ để tránh tạo loại 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 loại 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 thông báo và thay đổi Tuyên bố của chức năng để sử dụng đúng loại.

Ví dụ

Ví dụ này tạo ra một loại tổng hợp và sử dụng nó trong a Định nghĩa chức năng:

Tạo 스포츠 토토 결과i compfoo AS (F1 int, F2 văn bản);

Tạo hàm 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 loại trong định nghĩa bảng:

Tạo hộp loại (
    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 loại (
    InterlitalLight = 16,
    Input = my_box_in_function,
    Output = my_box_out_function,
    Phần tử = float4
);

sẽ cho phép các số thành phần của giá trị hộp Truy cập bằng cách đăng ký. Nếu không thì 스포츠 토토 결과i hành xử giống như trước.

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

Tạo 스포츠 토토 결과i 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 ởPostgreSQL : 문서 : 8.0 : 사용자 정의 사설 토토 사이트.

Tương thích

thisTạo 스포츠 토토 결과iLệnh là APostgreSQLPhần mở rộng. Có mộtTạo 스포츠 토토 결과iTuyên bố trong SQL: 1999 và sau đó điều đó khá khác biệt về chi tiết.