postgresql修改自增序列操作
在mysql中,实现id自增的方式是依靠加一个auto_increment标志,而在pgsql中,id自增是通过序列SEQUENCE。
创建表时设置自增序列为:
CREATETABLE"config"(
"id"int4NOTNULLDEFAULTnextval('config_id_seq'::regclass),
...
};
如果需要修改创建表之后的序列,如:
----删除前先解除id对该序列的依赖
ALTERTABLEtablenameALTERCOLUMNidSETDEFAULTnull;
DROPSEQUENCEIFEXISTSsequence_name;
----id_max即id目前的最大值,可写为1,可通过“SELECTMAX(id)FROMtablename”得到
CREATESEQUENCEsequence_nameSTARTWITHid_max;
ALTERTABLEtablenameALTERCOLUMNidSETDEFAULTnextval('sequence_name'::regclass);
补充:PostgreSQL序列增删改
创建序列
CREATESEQUENCEifnotexiststest_mergetable_id_seq INCREMENT1 MINVALUE1 MAXVALUE999999999 START1 CACHE1; //或者: createsequenceifnotexiststest_mergetable_id_seqincrementby1minvalue1nomaxvaluestartwith1;
指定序列(给表的主键指定创建好的序列)
altertabletest_mergetablealtercolumn"i_id"setdefaultnextval('test_mergetable_id_seq');
设置序列自增长从当前最大值开始
SELECTsetval('test_mergetable_id_seq',(SELECTMAX(i_id)FROMtest_mergetable));
altersequencetest_mergetable_id_seqstartwith12;
删除序列
dropsequenceIFEXISTStest_mergetable_id_seq
查看序列
SELECTnextval('test_mergetable_id_seq')
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。