我有一张在postgres 15的table
create table places
(
id bigint generated always as identity
constraint pk_places
primary key,
name varchar(128) not null,
address varchar(256) not null,
region_name varchar not null
constraint fk_places_region_name_regions
references regions
on update cascade on delete restrict,
coordinates geography(Point, 4326),
constraint uq_places_name
unique (name, region_name)
);
alter table places
owner to postgres;
create index idx_places_coordinates
on places using gist (coordinates);
我想在坐标字段上创建一个唯一的索引,但确切的值是唯一的,没有什么意义,因为坐标可能被指定为彼此微小的容差,这有效地使它们非唯一。问题-是否有可能构建唯一索引,使得例如,1个点和将位于例如第一个1周围的100米半径内的另一个点将被视为1(相同)点,并且作为回报将召唤出唯一索引约束异常?
谢谢你
1条答案
按热度按时间sshcrbum1#
可以为点周围的小缓冲区创建排除约束,以防止这些缓冲区的边界框重叠: