我们有一个已分区的表,现在我们想在表中添加一个serial id column
。
我们需要explicitly
将id列添加到所有分区表中还是我们只需要将该列添加到master
表中
如果有任何帮助,那就太好了。
谢谢。
在现有的常规表成为分区表的分区后。那么只有一个物理表
分区表本身是一个"虚表没有存储的表自己的。相反,存储属于分区,这些分区是否则,与分区表关联的普通表。每一个分区存储由其分区定义的数据的子集范围之内。插入到分区表中的所有行将被路由到的值选择合适的分区之一分区键列。更新一行的分区键将会如果不再使用,则将其移动到不同的分区中满足原分区的分区界
分区本身可以被定义为分区表,因此子分区。虽然所有分区必须有相同的列作为它们的分区父列,分区可以有它们自己的索引、约束和默认值,与其他分区。有关创建分区的详细信息,请参见CREATE TABLE表和分区。
begin;
CREATE temp TABLE list_parted (
a int primary key ,
b text
) PARTITION BY range (a);
CREATE temp TABLE l_part (a int primary key, b text );
CREATE temp TABLE l_part_2 (a int primary key, b text );
insert into l_part values (1),(2);
ALTER TABLE list_parted ATTACH PARTITION l_part FOR VALUES FROM (1) TO (10);
ALTER TABLE list_parted ATTACH PARTITION l_part_2 FOR VALUES FROM (11) TO (19);
commit ;
alter table list_parted add column test_serial bigserial;
d l_part_2
返回Table "pg_temp_3.l_part_2"
+-------------+---------+-----------+----------+--------------------------------------------------+
| Column | Type | Collation | Nullable | Default |
+-------------+---------+-----------+----------+--------------------------------------------------+
| a | integer | | not null | |
| b | text | | | |
| test_serial | integer | | not null | nextval('list_parted_test_serial_seq'::regclass) |
+-------------+---------+-----------+----------+--------------------------------------------------+
Partition of: list_parted FOR VALUES FROM (11) TO (19)
Indexes:
"l_part_2_pkey" PRIMARY KEY, btree (a)
然而:
alter table list_parted add column test_serial1 integer generated always as identity;
then error occurred:
--ERROR: cannot recursively add identity column to table that has child tables