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

Làm thế nào để duy trì ràng buộc khóa ngoại trên các cơ sở dữ liệu khác nhau?

Tôi không thể nghĩ ra bất kỳ cách nào để làm điều này với MySQL tiêu chuẩn.

Bạn có thể viết một plugin cho MySQL Proxy , quản lý tính toàn vẹn tham chiếu giữa bảng mẹ và bảng con trên các máy chủ khác nhau:

  • Chặn INSERTUPDATE chống lại bảng con. Truy vấn để khớp hàng trong bảng mẹ. Không thành công INSERT / UPDATE nếu không tìm thấy kết quả phù hợp nào trong bảng chính.

  • Chặn DELETE chống lại bảng cha. Truy vấn các hàng phụ thuộc trong bảng con. Không thành công DELETE nếu tìm thấy bất kỳ hàng phụ thuộc nào trong bảng con. Nếu ràng buộc nhằm hỗ trợ hành vi xếp tầng, hãy làm điều đó thay vì thất bại.

  • Đánh chặn UPDATE chống lại bảng cha. Nếu giá trị khóa chính thay đổi như một phần của bản cập nhật, hãy truy vấn các hàng phụ thuộc được tìm thấy trong bảng con. Không thành công UPDATE nếu tìm thấy bất kỳ hàng phụ thuộc nào trong bảng con. Nếu ràng buộc nhằm hỗ trợ hành vi xếp tầng, hãy làm điều đó thay vì thất bại.

Lưu ý rằng bạn phải giữ thông tin về các ràng buộc toàn vẹn tham chiếu trong plugin MySQL Proxy của bạn (hoặc viết tệp cấu hình tùy chỉnh cho plugin của bạn để ghi lại các mối quan hệ). Bạn không thể sử dụng FOREIGN KEY thông thường cú pháp để khai báo các ràng buộc như vậy trên các phiên bản MySQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách đánh giá hiệu suất của Moodle

  2. mysqldump không hoạt động trong crontab

  3. PHP Lỗi nghiêm trọng:Không tìm thấy lớp 'PDO'

  4. Tuyên bố chuẩn bị trước của MySQL - Cách lặp qua

  5. Trình kích hoạt Mysql để cập nhật hàng đã chèn