【问题标题】:How can multiple unique in partition tabale?分区表中的多个唯一性如何?
【发布时间】:2021-12-21 09:12:49
【问题描述】:

我有一个如下所示的 SQL 表。

CREATE TABLE my_table 
(
    id serial,
    user_id int,
    order_no character varying(50),
    date_time timestamp,
    primary key (id, user_id, date_time),
    unique(user_id, order_no)
) PARTITION BY RANGE (date_time);

我有一张桌子。我需要将order_no 列与user_id 列分开。没有任何问题。

但我必须唯一的data_time 列,因为我使用分区。但date_time 列必须用user_idorder_no 分隔。

顺便说一句,我不想​​这样unique (user_id, order_no, data_time)

我怎样才能在这个表中唯一的date_time

【问题讨论】:

  • 这应该足够了date_time timestamp default now() unique。顺便说一句,tarih 在主键中来自哪里?
  • 这是错误的。我纠正了我的错误。对不起
  • 对具有默认值now() 的列具有唯一约束可能不是一个好主意。您不能在单个事务中插入多于一行。
  • 如果我愿意,我该如何添加这个@Stefanov.sm
  • 只需在您的 DDL 中的 now() 之后添加 unique,但是 - 正如 @LeandroBardelli 所说 - 在这样做之前请三思。

标签: sql postgresql partition


【解决方案1】:

无法创建唯一索引或约束来保证order_nouser_id 是唯一的。这是分区的缺点之一。

您可以在分区上创建唯一约束。虽然这并不能保证全球唯一性,但它还有很长的路要走。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-18
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多