mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
Clarify error message and documentation related to typed tables.
We restrict typed tables (those declared as "OF composite_type") to be based on stand-alone composite types, not composite types that are the implicitly-created rowtypes of other tables. But if you tried to do that, you got the very confusing error message "type foo is not a composite type". Provide a more specific message for that case. Also clarify related documentation in the CREATE TABLE man page. Erik Wienhold and David G. Johnston, per complaint from Hannu Krosing. Discussion: https://postgr.es/m/CAMT0RQRysCb_Amy5CTENSc5GfsvXL1a4qX3mv_hx31_v74P==g@mail.gmail.com
This commit is contained in:
@ -249,18 +249,18 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM
|
||||
<listitem>
|
||||
<para>
|
||||
Creates a <firstterm>typed table</firstterm>, which takes its
|
||||
structure from the specified composite type (name optionally
|
||||
schema-qualified). A typed table is tied to its type; for
|
||||
example the table will be dropped if the type is dropped
|
||||
(with <literal>DROP TYPE ... CASCADE</literal>).
|
||||
structure from the specified stand-alone composite type (that is,
|
||||
one created using <xref linkend="sql-createtype"/>) though it still
|
||||
produces a new composite type as well. The table will have a
|
||||
dependency on the referenced type, meaning that cascaded alter and
|
||||
drop actions on that type will propagate to the table.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
When a typed table is created, then the data types of the
|
||||
columns are determined by the underlying composite type and are
|
||||
not specified by the <literal>CREATE TABLE</literal> command.
|
||||
A typed table always has the same column names and data types as the
|
||||
type it is derived from, so you cannot specify additional columns.
|
||||
But the <literal>CREATE TABLE</literal> command can add defaults
|
||||
and constraints to the table and can specify storage parameters.
|
||||
and constraints to the table, as well as specify storage parameters.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
Reference in New Issue
Block a user