我正在使用Postgres 9.5,并且在这里看到一些奇怪的东西。
我有一个cron job每5分钟运行一次,执行一个SQL语句,如果不存在,则添加一系列记录。
INSERT INTO
sometable (customer, balance)
VALUES
(:customer, :balance)
ON CONFLICT (customer) DO NOTHING
sometable.customer是一个主键(text)
sometable结构如下:
id:连续的编号
customer:文本
balance:大整数
现在似乎每次运行此作业时,id字段会自动静默地增加1。所以下一次,如果我真的添加一个字段,它将比我的最后一个值高出数千个数字。我原以为这个查询会检查冲突,如果有冲突,则不做任何操作,但目前看来它似乎会尝试插入记录,增加id然后停止。
有什么建议吗?
SERIAL
/SEQUENCE
支持不是您应该使用的东西。请参见Craig Ringer的此答案。 - IMSoP