sql >> Databasteknik >  >> RDS >> PostgreSQL

Sequelize skapar inte främmande nycklar som begränsningar

För det första är det inte ovanligt att ORM:er hanterar den här typen av saker internt snarare än genom att använda främmande nyckelbegränsningar i databasen.

För det andra är det inte ovanligt att ORM kräver ett par av associationsuttalanden för att utlösa all intern hantering du kan förvänta dig.

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

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

Slutligen kommer Sequelize faktiskt att skriva utländska nyckeldeklarationer i databasen, men bara om du också deklarerar någon form av åtgärd (eller passivitet) med onUpdate eller 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
);

Kodexempelkälla




  1. Kör SQL-skript i Multitenant-miljö med catcon.pl

  2. Betydelsen av Oracles dump(systimestamp) bytes

  3. Kan inte skapa en ny databas med pgadmin4

  4. Vad är regeln för "okänt" och typinferens?