【发布时间】:2019-06-25 18:29:44
【问题描述】:
我使用 SERIAL 语句在 Postgres 中自动增加了一行。到目前为止,这项工作还不错,但我想为每个主键自动递增。我该如何解决?
CREATE table snapshot(tracking_number varchar(20),
counter SERIAL,
date date,
time time,
status varchar(100),
PRIMARY KEY(tracking_number, counter));
例如,随着每个新条目的增加,计数器会增加,但我希望每个主键的每个条目都以 1 开头,并且只有在再次插入相同的主键时才会增加。
insert into snapshot(tracking_number, date, time, status) values (‘123’, ‘2018-05-05’,’09:00’, ‘mystatus’);
insert into snapshot(tracking_number, date, time, status) values (‘999’,‘2018-05-05’,’09:00’, ‘mystatus’);
这两个插入应该导致两个条目的计数器为 1
insert into snapshot(tracking_number, date, time, status) values (‘999’,‘2018-05-05’,’09:00’, ‘mystatus’);
再次插入“999”应将“999”的计数器生成为 2,“123”的计数器仍应为 1
【问题讨论】:
-
向我们展示数据库架构、示例数据、当前和预期输出。请阅读How-to-Ask 这里是START 了解如何提高问题质量并获得更好答案的好地方。 How to create a Minimal, Complete, and Verifiable example 尝试在rextester.com 中创建样本
-
我不确定你想要什么,请举个例子
-
再次,给我们看一个例子。但如果你想要我认为你想要的。这不能在表定义中完成。您可能需要一个触发器来更改该计数器。
标签: postgresql