行创建的时间戳在表中是唯一的吗?



我知道时间戳是某个时刻的时间实例。

但是来到我的表,我的表没有主键。

所以我需要一个唯一的交易列。

我应该采取行创建的时间戳列具有唯一的表列。

表定义

Create Table order_processing_logs(
order_number integer,
processing_status integer,
cust_id character varying(200),
vendor_id character varying(200),
.
.
.
.
.
.,etc,
created_time timestamp without time zone DEFAULT now(),
updated_time timestamp without time zone DEFAULT now()
); 

我应该created_time作为表中的唯一列吗?

现在,如果我更改表的体系结构,它将影响数百万条记录。

No.通常,您无法确定没有两行

完全相同的时间。如果您使用的是同时提交所有行的事务,则更为关键。此小提琴显示两行的时间戳相等:demo:db<>fiddle

也许您可以将两列的组合用作

PRIMARY KEY (order_number, current_timestamp)

但是,由于您没有确保每个列(或组合(的唯一性,因此您将永远不安全。


最好添加一个类型为serial的列,这是一个自动递增 (bigint( 的数字。

Postgres 10开始,您可以使用GENERATE IDENTITY而不是serial类型:

id INT GENERATED ALWAYS AS IDENTITY

(http://www.postgresqltutorial.com/postgresql-identity-column/(

我认为仅使用created_time是不明智的,因为 2 个不同的顺序可能同时放置

我更喜欢组合order_number,created_time列以制作独特的

相关内容

  • 没有找到相关文章

最新更新