在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://www.cnblogs.com/stephen-liu74/archive/2012/05/07/2295273.html
http://space.itpub.net/?uid-519536-action-viewspace-itemid-617172