Вы можете сделать это с помощью 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](https://i.stack.imgur.com/tquKY.png)