Ten eerste is het niet ongebruikelijk dat ORM's dit soort zaken intern afhandelen in plaats van externe sleutelbeperkingen in de database te gebruiken.
Ten tweede is het niet ongebruikelijk dat ORM's een paar vereisen van associatieverklaringen om alle interne afhandeling te activeren die u zou verwachten.
var Task = this.sequelize.define('Task', { title: Sequelize.STRING })
, User = this.sequelize.define('User', { username: Sequelize.STRING })
User.hasMany(Task)
Task.belongsTo(User)
Ten slotte zal Sequelize ook declaraties van buitenlandse sleutels in de database schrijven, maar alleen als u ook een of andere actie (of inactiviteit) declareert met onUpdate
of 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
);