Разделить контрольное ограничение на другой столбец - PullRequest
0 голосов
/ 27 июня 2018

У меня есть модель с двумя полями даты (от и до). Я хотел бы добавить ограничение к этой модели, проверяя, находятся ли эти даты в один и тот же день. Возможно ли это с помощью Sequelize? В документации показаны только контрольные ограничения с постоянными значениями .

1 Ответ

0 голосов
/ 28 июня 2018

Вы можете сделать это с помощью check и where предложения

"use strict";
module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface
      .createTable("Users", {
        id: {
          allowNull: false,
          autoIncrement: true,
          primaryKey: true,
          type: Sequelize.INTEGER
        },
        startDate: Sequelize.DATE,
        endDate: Sequelize.DATE,
      }).then((result) => {
        return queryInterface
          .addConstraint("Users", ['endDate'], {
            type: 'check',
            where: {
              endDate: {
                [Sequelize.Op.gt]: { [Sequelize.Op.col]: 'Users.startDate' }
              }
            }
          });
      });
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.dropTable("Users");
  }
};

Если мы попытаемся вставить строки в БД, нарушающие это ограничение, мы получим ошибку, как показано ниже

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...