PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Sequelize não cria chaves estrangeiras como restrições


Primeiro, não é incomum que os ORMs lidem com esse tipo de coisa internamente, em vez de usar restrições de chave estrangeira no banco de dados.

Segundo, não é incomum que ORMs exijam um par de instruções de associação para acionar todo o tratamento interno que você pode esperar.
var Task = this.sequelize.define('Task', { title: Sequelize.STRING })
  , User = this.sequelize.define('User', { username: Sequelize.STRING })

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

Finalmente, o Sequelize escreverá declarações de chave estrangeira no banco de dados, mas somente se você também declarar algum tipo de ação (ou inação) com 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
);

Fonte de exemplo de código