Restrictions on serial data types

A named row type that contains a SERIAL, SERIAL8, or BIGSERIAL data type cannot be used as a column type in a table.

The following statements return an error when the database server attempts to create the table:
CREATE ROW TYPE row_t (s_col SERIAL)

CREATE TABLE bad_tab (col1 row_t)

However, you can use a named row type that contains a SERIAL, SERIAL8, or BIGSERIAL data type to create a typed table.

For information about the use and behavior of SERIAL, SERIAL8, and BIGSERIAL types in table hierarchies, see SERIAL types in a table hierarchy.