PostgreSQL数据库中分区,如何配置主键? 返回
csbird23 发布于1个月前
PG数据库中,以年月来对表分区,如何设置主键?无法单独设置自增id为主键。主要是后期用ORM,没有主键不好操作
热忱回答(7)
-
fate sta VIP0
1个月前一般雪花ID作主键,文档:雪花ID
0 回复 -
csbird23 VIP0
1个月前CREATE TABLE sensor_data1 (
id BIGINT PRIMARY KEY,
device_id TEXT NOT NULL,
temperature NUMERIC(5,2),
humidity NUMERIC(5,2),
record_time TIMESTAMP NOT NULL DEFAULT now()
) PARTITION BY RANGE (record_time);
//==================================
错误提示:
ERROR: unique constraint on partitioned table must include all partitioning columns
DETAIL: PRIMARY KEY constraint on table "sensor_data1" lacks column "record_time" which is part of the partition key.
因为用了record_time字段(时间,年月)来分区,所以,设置id为单独的主键就不行,如果不设置主键(取消id的PRIMARY KEY ),那么Sugar中进行增删改查的操作时,又变成了无主键?
0 回复 -
csbird23 VIP0
1个月前-- 复合主键可以创建,但是,以后操作的时候,都要用复合主键。是否可以操作的时候用id作为唯一的主键?
CREATE TABLE sensor_data1 (
id BIGINT ,
device_id TEXT NOT NULL,
temperature NUMERIC(5,2),
humidity NUMERIC(5,2),
record_time TIMESTAMP NOT NULL DEFAULT now(),
PRIMARY KEY (id, record_time) -- 复合主键
) PARTITION BY RANGE (record_time);
0 回复 -
fate sta VIP0
1个月前这个表不用ORM建表就行了。
你实体加上主键就行了。ORM中实体只是CRUD的一个标识,不一定要和数据库一致。
0 回复 -
csbird23 VIP0
1个月前是否可以理解为:
在数据库中建表时,用PRIMARY KEY (id, record_time) -- 复合主键
然后ORM中的实体,只配置id为主键?这样CRUD操作的时候,是以id为唯一标识来操作?
0 回复 -
fate sta VIP0
1个月前是的
0 回复 -
csbird23 VIP0
1个月前明白了,感谢,感谢
0 回复