PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Sequelize не създава външни ключове като ограничения

Първо, не е необичайно за ORM да се справят с този вид неща вътрешно, вместо да използват ограничения на чужд ключ в базата данни.

Второ, не е необичайно ORM да изискват чифт на изрази за асоцииране, за да задейства цялата вътрешна обработка, която може да очаквате.

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

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

И накрая, Sequelize действително ще напише декларации за външен ключ в базата данни, но само ако декларирате и някакъв вид действие (или бездействие) с onUpdate или 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
);

Източник на примерен код




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да накарам alembic да излъчва персонализиран DDL на after_create?

  2. Следвайте външна база данни от Heroku

  3. Как да използвате PreparedStatement и търсене без учет на главни и малки букви

  4. java enum и postgresql enum

  5. Как да извадите секунди от postgres datetime