MySql JSON Schema

3

我在 MySql 中有一个类似于这样的表:

create table json_docs (
  id int auto_increment primary_key,
  doc json not null
)

我还有一个 JSON 模式,这个 doc 列也遵循该模式。

{
  "$id": "https://my.org/namespace/doc.schema.json",
  "type": "object",
  "properties": {...}
}

在MySql中,是否有一种方法可以在插入或更新数据时强制执行该模式?

insert into json_docs (doc) values ('{...}')

我也在使用PHP Laravel。如果有办法在Laravel的模型层中完成这个任务,我也很感兴趣。
谢谢您提前的帮助!
2个回答

2

谢谢!这正是我一直在寻找的,不知为何我之前没有找到。可惜这只适用于MySQL 8+。从MySQL 8.0.17开始,MySQL支持针对JSON模式验证JSON文档。 - santiago arizti

1

MySQL没有内置任何功能来验证JSON文档的架构。

更新:8.0.17版本现在已经存在此功能,但在该版本之前,以下答案仍然适用:

您必须在将文档插入数据库之前,在应用程序中独立地验证文档。

请参见 https://github.com/justinrainbow/json-schema 以获取PHP中的开源JSON验证器。


此外,JSON Schema 可用于表示非扁平化数据,因此所使用的模式需要是扁平化的,而不是具有多个层级。 - Relequestual
注意:现在MySQL 8已经有了这个选项,请参见已接受的答案。 - santiago arizti
有关MySQL 8.0.17中JSON文档验证的更多信息,请访问https://elephantdolphin.blogspot.com/2019/07/json-schema-validation-with-mysql-8017.html。 - Dave Stokes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接