PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Sequelize ne crée pas de clés étrangères comme contraintes

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
);

Source de l'exemple de code