Thread: change data type int4 to serial

change data type int4 to serial

From
Seb
Date:
Hi,

I am experimenting a migration of an M$ Access database to postgresql in a
Debian GNU/Linux system.  Based on some reading, I've approached it as
follows:

1. Using mdbtools, export the tables from Access to *.csv files,
   sanitizing file names and column names.

2. Using unixodbc and GNU R's package RODBC, import the tables to an empty
   database in postgresql; i.e. create a database in postgresql, read the
   tables into R for cleaning up mbdbtools' job and let RODBC import the
   tables into postgresql, specifying the data type for
   date/time/timestamp columns.

Checking the results in pgadmin, this proceeded fine, but now that I want
to specify the primary and foreign keys in the tables, I see that the
columns needed for this were imported as int4 data type.  I would like
these to be automatically sequenced, so need them to be 'serial'.  Going
into "properties" for these columns in pgadmin, the 'serial' option is not
available in the "data type" pull-down menu.  Is this not possible?  Can
the 'serial' data type be specified during import.  Thanks in advance.


Cheers,

--
Seb

Re: change data type int4 to serial

From
Bruno Wolff III
Date:
On Wed, Feb 21, 2007 at 11:20:38 -0600,
  Seb <spluque@gmail.com> wrote:
>
> Checking the results in pgadmin, this proceeded fine, but now that I want
> to specify the primary and foreign keys in the tables, I see that the
> columns needed for this were imported as int4 data type.  I would like
> these to be automatically sequenced, so need them to be 'serial'.  Going
> into "properties" for these columns in pgadmin, the 'serial' option is not
> available in the "data type" pull-down menu.  Is this not possible?  Can
> the 'serial' data type be specified during import.  Thanks in advance.

'serial' is a psuedo type that uses a DEFAULT that references a SEQUENCE.
In recent versions of postgres a dependency is set up so that you can't
delete the sequence while it is being referenced.

You can create the sequence manually, set an appropiate starting value and
use ALTER TABLE to change the default for the column to use nextval to
get the next sequence value.