Alter data type of a column to serial

后端 未结 3 1630
时光说笑
时光说笑 2020-12-13 17:59

In pgsql, is there a way to have a table of several values, and choose one of them (say, other_id), find out what its highest value is and make every new entry that is put i

3条回答
  •  独厮守ぢ
    2020-12-13 18:28

    A quick glance at the docs tells you that

    The data types smallserial, serial and bigserial are not true types but merely a notational convenience for creating unique identifier columns

    If you want to make an existing (integer) column to work as a "serial", just create the sequence by hand (the name is arbitrary), set its current value to the maximum (or bigger) of your current address.new_id value, at set it as default value for your address.new_id column.

    To set the value of your sequence see here.

    SELECT setval('address_new_id_seq', 10000);

    This is just an example, use your own sequence name (arbitrary, you create it), and a number greater than the maximum current value of your column.


    Update: as pointed out by Lucas' answer (which should be the acccepted one) you should also specify to which column the sequence "belongs to" by using CREATE/ALTER SEQUENCE ... OWNED BY ...

提交回复
热议问题