sql >> Database >  >> RDS >> PostgreSQL

Sequelize maakt geen externe sleutels als beperkingen

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

Codevoorbeeld bron




  1. Krijg polygonen dicht bij een lat,long in MySQL

  2. SQL Server 2005 implementatie van MySQL VERVANGEN IN?

  3. De MyRocks Storage Engine gebruiken met MariaDB Server

  4. E_WARNING:Fout bij het verzenden van het STMT_PREPARE-pakket. PID=*