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')
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。