【问题标题】:MySQL Use POINT coordinate as primary/unique keyMySQL 使用 POINT 坐标作为主键/唯一键
【发布时间】:2021-10-17 15:37:14
【问题描述】:

我有一张包含一些数据的表格。我使用 POINT 类型,因为有时我需要根据这个参数选择数据。

我需要添加一个禁止插入同一对值的约束。

当我尝试简单地添加唯一索引时收到此错误。

Error 3728: Spatial indexes can't be primary or unique indexes

点可以有负值。因此,康托尔配对函数可能不是存储为 LONG/INT 的情况。

还有其他方法可以实现该检查吗? 我知道我可以为此使用 varchar,但我想为此使用一些数据类型,例如整数/小数。或者也许某种检查即将到来的值的触发器是唯一的?

无论哪种方式,我都想要数据库级别的控制。

【问题讨论】:

    标签: mysql geometry spatial database-indexes


    【解决方案1】:

    使用条件插入解决: MySQL Conditional Insert

    insert into `tbl` (`position`) select * from (select point(%f, %f) `p`) `tmp` where not exists ( select * from `tbl` `t` where `t`.`position` = `tmp`.`p` )
    

    如果有人知道其他方法,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 2019-02-15
      • 1970-01-01
      • 2018-06-04
      相关资源
      最近更新 更多