使用 sequelize 为 JSON 列添加 MariaDB 约束检查

Add MariaDB Constraint CHECK for JSON column using sequelize

我使用的是 MariaDB v10.2.11,从 v10.2.7 开始,您可以有 JSON 列,其约束验证行的 JSON 值。

我想通过 Sequelize 迁移添加那个约束,但我不知道该怎么做。

MariaDB JSON 文档:

我正在分享我在这个问题上的解决方案 (https://github.com/sequelize/sequelize/issues/8767)(这是我的)。

module.exports = {
  up: (queryInterface, Sequelize) =>
    queryInterface
      .createTable('tableName', {
        // id, other columns
        column1: Sequelize.JSON,
        // more columns
      })
      .then(() =>
        queryInterface.addConstraint('tableName', ['column1'], {
          type: 'check',
          where: {
            column1: Sequelize.literal('JSON_VALID(column1)'),
          },
          name: 'check_column1_has_valid_json',
        }),
      ),
  down: (queryInterface) => queryInterface.dropTable('tableName'),
};

由于 createTableaddConstraint returns 一个承诺,可以在一次迁移中链接多个操作:)