我正在寻找一种在插入时排序表条目的方法,而不是抓取。如果这是不可能的,是否有一种方法可以使主键有一个自动增量?(也就是说,如果id是主要的,则ai将从插入的每个不同的id从0开始递增)
示例:
id | ai
---+---
0 | 0
0 | 1
0 | 2
1 | 0
1 | 1
1 | 2
1 | 3发布于 2018-02-01 03:46:03
简短的回答:不,和是,分别。
SQL数据库确实按某种顺序存储数据;无论是通过分配,还是(当表上有聚集索引时)按群集键存储数据。
但是,执行查询的过程并不保证数据将按照存储的顺序返回。要保证数据的顺序,必须在ORDER BY语句中使用SELECT子句。
是的,您可以在PostgreSQL中创建一个自动递增的ID值.虽然这通常用于创建作为主键的代理键,但如果您愿意的话,它似乎可以仅用于创建唯一的列。
对这个问题的公认的答案应该给你你需要的东西。您可以使用序列,也可以使用SERIAL伪数据类型(它在幕后为您创建序列)。有关序列的更多详细信息,请查看文档以获得您的版本。
(我相信SERIAL很可能从1开始,而不是0--您可能需要自己设置序列才能获得特定的起点)
注意:这个答案是PostgreSQL的标记版本,9.4。从第10版开始,PostgreSQL现在有一种类似于甲骨文或DB2的身份列机制,根据SQL:2003 & SQL:2008标准(feature # T174)。请参阅GENERATED ... FOR IDENTITY 这里的文档。
https://dba.stackexchange.com/questions/196781
复制相似问题