PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Sequelize không tạo khóa ngoại làm ràng buộc

Đầu tiên, không có gì lạ khi các ORM xử lý loại việc này trong nội bộ thay vì sử dụng các ràng buộc khóa ngoại trong cơ sở dữ liệu.

Thứ hai, không có gì lạ khi các ORM yêu cầu cặp trong số các câu lệnh liên kết để kích hoạt tất cả các xử lý nội bộ mà bạn có thể mong đợi.

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

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

Cuối cùng, Sequelize sẽ thực sự ghi khai báo khóa ngoại vào cơ sở dữ liệu, nhưng chỉ khi bạn cũng khai báo một số loại hành động (hoặc không hành động) với onUpdate hoặc 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
);

Nguồn mẫu mã




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL cách xem truy vấn nào đã chạy

  2. Cài đặt Odoo trên Mac Không thể Thực thi Lệnh LESSC

  3. Chia dữ liệu cột được phân tách bằng dấu phẩy thành các cột bổ sung

  4. Vấn đề với liên kết json JOOQ

  5. PostgreSQL:Lặp lại các hàng trong bảng với vòng lặp for, truy xuất giá trị cột dựa trên hàng hiện tại