在PostgreSQL或MySQL中是否存在反向“AUTO_INCREMENT”的现有实现?

时间:2012-01-20 21:00:33

标签: mysql postgresql primary-key auto-increment countdown

无需手动执行(如果不存在其他选项,我可以实现),PostgreSQL或MySQL中是否有一种方法可以使用减少 <的自动计数器/字段em>而不是 增量

由于当前应用程序中的各种原因,仅仅通过查看最近添加的记录,知道还有多少条目(从数据类型的角度来看)仍然可以添加到表中,这将是一件好事,而不是从数据类型的最大值中减去最新的ID。

那么,这两个系统都有“AUTO_DECREMENT”或类似内容吗?

1 个答案:

答案 0 :(得分:6)

您必须在PostgreSQL中进行一些手动配置,但您可以配置如下序列:

create sequence example_seq
 increment by -1
 minvalue 1
 maxvalue 5
 start with 5;

create table example(
example_id int primary key default nextval('example_seq'),
data text not null
);

alter sequence example_seq owned by example.example_id;

我想这相当于用serial列创建表,然后改变自动生成的序列。

现在,如果我插入一些行,我会将example_id从5开始倒数。如果我尝试插入超过5行,我会得到nextval: reached minimum value of sequence "example_seq" (1)