まず、ORMがデータベースで外部キー制約を使用するのではなく、この種のことを内部で処理することは珍しくありません。
次に、ORMがペアを要求することは珍しくありません。 予想されるすべての内部処理をトリガーするための関連ステートメントの数。
var Task = this.sequelize.define('Task', { title: Sequelize.STRING })
, User = this.sequelize.define('User', { username: Sequelize.STRING })
User.hasMany(Task)
Task.belongsTo(User)
最後に、Sequelizeは実際に外部キー宣言をデータベースに書き込みますが、onUpdate
を使用して何らかのアクション(または非アクション)も宣言した場合に限ります。 またはonDelete
。
User.hasMany(Task, { onDelete: 'SET NULL', onUpdate: 'CASCADE' })
CREATE TABLE IF NOT EXISTS `Task` (
`id` INTEGER PRIMARY KEY,
`title` VARCHAR(255),
`user_id` INTEGER REFERENCES `User` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
);