【发布时间】:2019-04-21 13:02:55
【问题描述】:
我在数据库中有一个名为“tickets”的现有表,其中包含列:
id (string, Primary Key, contains UUID like e6c49164-545a-43a1-845f-73c5163962f2)
date (biginteger, stores epoch)
status (string)
我需要添加新的自动增量列ticket_id,但要生成的值应该根据“日期”列值。
我试过这个:
ALTER TABLE "tickets" ADD COLUMN "ticket_id" SERIAL;
问题是,它以某种奇怪的顺序生成“ticket_id”值,看起来它是基于作为表主键的“id”列。
是否可以生成按“日期”排序的序列值?这很重要,因为“ticket_id”需要根据票的生成顺序显示。
【问题讨论】:
-
您可以考虑创建一个新表并使用
INSERT INTO newtable SELECT ctid, ... FROM tickets WHERE ... ORDER BY date插入正确的值吗? -
不相关,但是:为什么要使用 bigint 作为时间戳?在 SQL 中处理一个真正的
timestamp列会容易得多。
标签: postgresql sql-update ddl database-sequence