在Postgresql数据库中,作为主键的id,经常使用serial字段。

例如:

CREATE TABLE tbl_test
(
id serial NOT NULL,

CONSTRAINT pk_t14 PRIMARY KEY (id)

)

 

那么 默认数据库会为tbl_test表中的字段 id 生成一个序列:

CREATE SEQUENCE tbl_test_id_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1
CACHE 1;

 

如何获取sequence的洗一个或者当前值:

select nextval('tbl_test_id_seq');
select currval('tbl_test_id_seq');

 

注意事项:

nextval 函数:递增序列对象前进到它的下一个数值并且返回该值。当你插入record时,这个动作会自动完成。多个会话并发运行nextval,每个进程也会安全地收到一个唯一的序列值。

currval 函数:  返回当前会话中最近一次nextval抓到的该序列的数值。当前会话的意思是说,在本会话中在该序列上调用过 nextval,如果没有调用过,那么sql会产生一个错误。 如果出错了,说明没有执行过nextval,因此可以用于判断其它会话是否执行过nextval。

 

===================================

参考资料:

http://dba.stackexchange.com/questions/3281/how-do-i-use-currval-in-postgresql-to-get-the-last-inserted-id

http://www.cnblogs.com/stephen-liu74/archive/2012/05/07/2295273.html

http://space.itpub.net/?uid-519536-action-viewspace-itemid-617172

相关文章:

  • 2019-07-26
  • 2021-12-07
  • 2021-09-21
  • 2022-12-23
  • 2022-12-23
  • 2021-11-14
  • 2021-10-27
猜你喜欢
  • 2021-06-01
  • 2021-12-12
  • 2021-12-05
相关资源
相似解决方案