在pgsql中,有没有一种方法可以让一个包含多个值的表,然后 Select 其中一个(比如说,other_id),找出它的最高值,并使表中的每个新条目都从该值递增.
我想这太容易了,不可能有工作的机会..
ALTER TABLE address ALTER COLUMN new_id TYPE SERIAL
____________________________________
ERROR: type "serial" does not exist
非常感谢您的帮助!
在pgsql中,有没有一种方法可以让一个包含多个值的表,然后 Select 其中一个(比如说,other_id),找出它的最高值,并使表中的每个新条目都从该值递增.
我想这太容易了,不可能有工作的机会..
ALTER TABLE address ALTER COLUMN new_id TYPE SERIAL
____________________________________
ERROR: type "serial" does not exist
非常感谢您的帮助!
快速浏览一下docs就知道了
数据类型包括smallserial、serial和bigserial are not true types
如果要使现有(整数)列作为"序列"工作,只需手动创建序列(名称是任意的),将其当前值设置为当前address.new_id
值的最大值(或更大),并将其设置为address.new_id
列的默认值.
要设置序列的值,请参见here.
SELECT setval('address_new_id_seq', 10000);
这只是一个例子,使用您自己的序列名(任意,由您创建),并使用一个大于列的最大当前值的数字.
Update:正如Lucas的答案(应该是认可的答案)所指出的,您还应该使用CREATE/ALTER SEQUENCE ... OWNED BY ...
来指定序列"属于"哪个列