CREATE TABLE LIKE 使用不同的主键进行分区
CREATE TABLE LIKE with different primary key for partitioning
我有现有的 table 只狗,我想使用 colour
列按列表进行分区:
CREATE TABLE dogs (
id int PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
colour text,
name text
)
;
因为无法对现有的 table 进行分区,我将创建一个新的空分区 table 然后复制数据。
CREATE TABLE
trade_capture._customer_invoice
(
LIKE
trade_capture.customer_invoice
INCLUDING ALL
)
PARTITION BY LIST (bill_month)
;
此报告:
ERROR: insufficient columns in PRIMARY KEY constraint definition
DETAIL: PRIMARY KEY constraint on table "_dogs" lacks column "colour" which is part of the partition key.
我知道我可以像这样忽略主键,但是 table 没有主键似乎很糟糕!
CREATE TABLE
_dogs
(
LIKE
dogs
INCLUDING ALL
EXCLUDING INDEXES
)
PARTITION BY LIST (colour)
;
什么是最好的继续进行的方法,所以我有一个分区 table,它仍然有一个主键?
将分区键添加到主键:
ALTER TABLE trade_capture._customer_invoice
ADD PRIMARY KEY (id, bill_month);
没有其他选项可以对分区 table 进行唯一约束。
我有现有的 table 只狗,我想使用 colour
列按列表进行分区:
CREATE TABLE dogs (
id int PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
colour text,
name text
)
;
因为无法对现有的 table 进行分区,我将创建一个新的空分区 table 然后复制数据。
CREATE TABLE
trade_capture._customer_invoice
(
LIKE
trade_capture.customer_invoice
INCLUDING ALL
)
PARTITION BY LIST (bill_month)
;
此报告:
ERROR: insufficient columns in PRIMARY KEY constraint definition
DETAIL: PRIMARY KEY constraint on table "_dogs" lacks column "colour" which is part of the partition key.
我知道我可以像这样忽略主键,但是 table 没有主键似乎很糟糕!
CREATE TABLE
_dogs
(
LIKE
dogs
INCLUDING ALL
EXCLUDING INDEXES
)
PARTITION BY LIST (colour)
;
什么是最好的继续进行的方法,所以我有一个分区 table,它仍然有一个主键?
将分区键添加到主键:
ALTER TABLE trade_capture._customer_invoice
ADD PRIMARY KEY (id, bill_month);
没有其他选项可以对分区 table 进行唯一约束。