sql >> Database teknologi >  >> RDS >> PostgreSQL

Sequelize opretter ikke fremmednøgler som begrænsninger

For det første er det ikke ualmindeligt, at ORM'er håndterer denne slags ting internt i stedet for at bruge fremmednøglebegrænsninger i databasen.

For det andet er det ikke ualmindeligt, at ORM'er kræver et par af tilknytningserklæringer for at udløse al den interne håndtering, du kunne forvente.

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

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

Endelig vil Sequelize faktisk skrive fremmednøgledeklarationer ind i databasen, men kun hvis du også erklærer en form for handling (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
);

Kodeeksempelkilde




  1. Hvordan skifter man mellem en indekseret og ikke-indekseret operation afhængigt af input?

  2. Returnerer 1 eller 0 i specifik SQL-forespørgsel

  3. BOB Dynamic Query Building

  4. SLET VS DROP i SQL