Tout d'abord, il n'est pas rare que les ORM gèrent ce genre de choses en interne plutôt qu'en utilisant des contraintes de clé étrangère dans la base de données.
Deuxièmement, il n'est pas rare que les ORM exigent une paire d'instructions d'association pour déclencher toutes les manipulations internes auxquelles vous pourriez vous attendre.
var Task = this.sequelize.define('Task', { title: Sequelize.STRING })
, User = this.sequelize.define('User', { username: Sequelize.STRING })
User.hasMany(Task)
Task.belongsTo(User)
Enfin, Sequelize écrira en fait des déclarations de clé étrangère dans la base de données, mais seulement si vous déclarez également une sorte d'action (ou d'inaction) avec onUpdate
ou 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
);