Pertama, tidak jarang ORM menangani hal semacam ini secara internal daripada menggunakan batasan kunci asing dalam database.
Kedua, tidak jarang ORM membutuhkan pasangan pernyataan asosiasi untuk memicu semua penanganan internal yang mungkin Anda harapkan.
var Task = this.sequelize.define('Task', { title: Sequelize.STRING })
, User = this.sequelize.define('User', { username: Sequelize.STRING })
User.hasMany(Task)
Task.belongsTo(User)
Terakhir, Sequelize sebenarnya akan menulis deklarasi kunci asing ke dalam database, tetapi hanya jika Anda juga mendeklarasikan beberapa jenis tindakan (atau kelambanan) dengan onUpdate
atau 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
);