CREATE TYPE allows the user to register a new user data
- type with Postgres for use in the current data base. The
+ type with PostgreSQL for use in the current data base. The
user who defines a type becomes its owner.
typename is
the name of the new type and must be unique within the
New base data types can be fixed length, in which case
internallength is a
positive integer, or variable length,
- in which case Postgres assumes that the new type has the
+ in which case PostgreSQL assumes that the new type has the
same format
- as the Postgres-supplied data type, text.
+ as the PostgreSQL-supplied data type, text.
To indicate that a type is variable length, set
internallength
to .
The optional arguments
send_function and
receive_function
- are used when the application program requesting Postgres
+ are used when the application program requesting PostgreSQL
services resides on a different machine. In this case,
- the machine on which Postgres runs may use a format for the data
+ the machine on which PostgreSQL runs may use a format for the data
type different from that used on the remote machine.
In this case it is appropriate to convert data items to a
standard form when sending from the server to the client
Two generalized built-in functions, array_in and
array_out, exist for quick creation of variable-length
array types. These functions operate on arrays of any
- existing Postgres type.
+ existing PostgreSQL type.
-
+
+
Notes
+
+ Type names cannot begin with the underscore character
+ (_
) and can only be 31
+ characters long. This is because PostgreSQL silently creates an
+ array type for each base type with a name consisting of the base
+ type's name prepended with an underscore.
+
+
+
Examples
- This command creates the box data type and then uses the
+ This command creates the box data type and then uses the
type in a table definition:
CREATE TYPE box (INTERNALLENGTH = 8,
INPUT = my_procedure_1, OUTPUT = my_procedure_2);
CREATE TABLE myboxes (id INT4, description box);
-
+
This command creates a variable length array type with
- integer elements:
+ integer elements:
CREATE TYPE int4array (INPUT = array_in, OUTPUT = array_out,
INTERNALLENGTH = VARIABLE, ELEMENT = int4);
CREATE TABLE myarrays (id int4, numbers int4array);
-
+
This command creates a large object type and uses it in
a table definition:
CREATE TYPE bigobj (INPUT = lo_filein, OUTPUT = lo_fileout,
INTERNALLENGTH = VARIABLE);
CREATE TABLE big_objs (id int4, obj bigobj);
-
+
+
-
-
- 1998-09-21
-
-
- Notes
-
-
- Type names cannot begin with the underscore character
- ("_") and can only be 31 characters long. This is because
- Postgres silently creates an array type for each base type
- with a name consisting of the base type's name prepended
- with an underscore.
-
+
+
Compatibility
- Refer to DROP TYPE to remove an existing type.
-
- See also CREATE FUNCTION,
- CREATE OPERATOR and the chapter on Large Objects
- in the PostgreSQL Programmer's Guide.
-
-
+ This CREATE TYPE command is a
+
PostgreSQL extension. There is a
+ CREATE TYPE statement in SQL99 that is rather
+ different in detail.
+
-
-
-
-
- Compatibility
-
-
-
- 1998-09-21
-
-
- SQL3
-
-
CREATE TYPE is an
SQL3 statement.
-
-
+
+
See Also
+
+
+
+
+ PostgreSQL Programmer's Guide
+
+
Only the owner of a type can remove it.
+
-
-
- 1998-09-22
-
-
- Notes
-
- DROP TYPE statement is a
Postgres
- language extension.
-
- Refer to CREATE TYPE for
- information on how to create types.
-
- It is the user's responsibility to remove any operators,
- functions, aggregates, access methods, subtypes, and tables
- that use a deleted type.
-
+
+
Notes
- If a built-in type is removed, the behavior of the backend
- is unpredictable.
-
-
+
+
+ It is the user's responsibility to remove any operators,
+ functions, aggregates, access methods, subtypes, and tables that
+ use a deleted type.
+
+
+
+
+ If a built-in type is removed, the behavior of the server is
+ unpredictable.
+
+
+
-
-
- Usage
-
+
+
Examples
- To remove the <literal>box> type:
+ To remove the <type>box> type:
DROP TYPE box;
-
+
-
-
- Compatibility
-
-
-
-
- 1998-09-22
-
-
- SQL3
-
-
DROP TYPE is a
SQL3 statement.
-
-
+
+
Compatibility
+
+ A DROP TYPE statement exists in SQL99. As with
+ most other drop
commands, DROP
+ TYPE in SQL99 requires a drop behavior
+ clause to select between dropping all dependent objects or refusing
+ to drop if dependent objects exist:
+
+DROP TYPE name { CASCADE | RESTRICT }
+
+
PostgreSQL currently ignores
+ dependencies altogether.
+
+
+ Note that the CREATE TYPE command and the data
+ type extension mechanisms in
PostgreSQL
+ differ from SQL99.
+
+
+
+
+
See Also
+
+
+
+