MySQL 8.3 Release Notes
对于几何值,MySQL 区分语法良好形成和几何有效性这两个概念。
几何形状是语法良好形成的,如果它满足以下条件(非详尽列表):
-
线串至少有两个点
-
多边形至少有一个环
-
多边形环是闭合的(第一个和最后一个点相同)
-
多边形环至少有 4 个点(最小多边形是一个三角形,第一个和最后一个点相同)
-
集合不能为空(除了
GeometryCollection
)
几何形状是几何有效的,如果它是语法良好形成的,并满足以下条件(非详尽列表):
-
多边形不自相交
-
多边形内部环在外部环内
-
多多边形不重叠
空间函数如果几何形状不是语法良好形成的,将失败。空间导入函数在解析 WKT 或 WKB 值时,如果尝试创建不是语法良好形成的几何形状,将引发错误。语法良好形成也在尝试将几何形状存储到表格时进行检查。
允许插入、选择和更新几何无效的几何形状,但它们必须是语法良好形成的。由于计算开销很高,MySQL 不会明确检查几何有效性。空间计算可能检测到一些无效几何形状的案例,并引发错误,但它们也可能返回未定义的结果,而不检测无效性。需要几何有效几何形状的应用程序应该使用 ST_IsValid()
函数来检查。