sql >> Databáze >  >> RDS >> PostgreSQL

Sequelize nevytváří cizí klíče jako omezení

Za prvé, není neobvyklé, že ORM řeší tento druh věcí interně, spíše než pomocí omezení cizích klíčů v databázi.

Za druhé, není neobvyklé, že ORM vyžadují pár příkazů přidružení ke spuštění veškerého interního zpracování, které byste mohli očekávat.

var Task = this.sequelize.define('Task', { title: Sequelize.STRING })
  , User = this.sequelize.define('User', { username: Sequelize.STRING })

User.hasMany(Task)
Task.belongsTo(User)

Nakonec Sequelize skutečně zapíše deklarace cizího klíče do databáze, ale pouze v případě, že také deklarujete nějakou akci (nebo nečinnost) pomocí onUpdate nebo 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
);

Ukázkový zdroj kódu




  1. Naplnit JFreechart TimeSeriesCollection z Mysql DB?

  2. Vkládání a načítání obrázků do mysql pomocí pythonu

  3. 'ORA-00942:tabulka nebo pohled neexistuje' pouze při spuštění v rámci uložené procedury

  4. Mysql:výsledky za posledních sedm dní