PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Sequelize nie tworzy kluczy obcych jako ograniczeń

Po pierwsze, nierzadko zdarza się, że ORM-y obsługują tego rodzaju rzeczy wewnętrznie, zamiast używać ograniczeń kluczy obcych w bazie danych.

Po drugie, często zdarza się, że ORM wymagają pary oświadczeń powiązań, aby uruchomić całą wewnętrzną obsługę, jakiej można się spodziewać.

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

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

Wreszcie, Sequelize zapisze deklaracje klucza obcego do bazy danych, ale tylko wtedy, gdy zadeklarujesz również jakąś akcję (lub brak akcji) za pomocą onUpdate lub 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
);

Przykładowe źródło kodu




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uruchomić serwer Postgres?

  2. Jak uruchamiać wiele transakcji jednocześnie w PostgreSQL

  3. Knex.js - Jak stworzyć unikalny indeks z klauzulą ​​'gdzie'?

  4. Ustawienia ucieczki znaków PostgreSQL

  5. Jak ustawić UTF-8 w konstruktorze klasy PDO dla bazy danych PHP PgSQL