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

Ràng buộc duy nhất trên nhiều bảng

Bạn có thể thử những cách sau. Bạn phải tạo ràng buộc DUY NHẤT dư thừa trên (id, aId) trong Parent (SQL khá ngớ ngẩn phải không ?!).

CREATE TABLE Child
(parentId INTEGER NOT NULL,
 aId INTEGER NOT NULL UNIQUE,
FOREIGN KEY (parentId,aId) REFERENCES Parent (id,aId),
createdOn TIMESTAMP NOT NULL);

Có thể một giải pháp tốt hơn nhiều là loại bỏ hoàn toàn parentId khỏi bảng Con, thêm bId thay vào đó và chỉ tham chiếu bảng Gốc dựa trên (aId, bId) :

CREATE TABLE Child
(aId INTEGER NOT NULL UNIQUE,
 bId INTEGER NOT NULL,
FOREIGN KEY (aId,bId) REFERENCES Parent (aId,bId),
createdOn TIMESTAMP NOT NULL);

Có lý do gì khiến bạn không thể làm điều đó?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Npgsql / Postgresql:hàm không tồn tại thông báo lỗi khi có

  2. Làm thế nào để sử dụng trình kích hoạt 'for statement' trong postgres?

  3. Lỗi PostGres Khi Sử dụng Khác biệt:Postgres LỖI:không thể xác định một toán tử đặt hàng cho bản ghi loại

  4. Lỗi phát sinh trong postgreSQL

  5. PostgreSQL - cơ sở dữ liệu được khôi phục nhỏ hơn ban đầu