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

Làm thế nào để thực thi tính toàn vẹn tham chiếu trên Kế thừa một bảng?

Những gì bạn có thể làm là triển khai trình kích hoạt trên Users của bạn và Team bảng thực thi bất cứ khi nào các hàng bị xóa khỏi:

Bảng người dùng:

DELIMITER $$
CREATE TRIGGER user_playlist_delete 
BEFORE DELETE ON User FOR EACH ROW
BEGIN
    DELETE a FROM Playlist a
    INNER JOIN UserPlaylist b ON a.id = b.id AND b.userId = OLD.id;
END$$
DELIMITER ;

Bảng nhóm:

DELIMITER $$
CREATE TRIGGER team_playlist_delete 
BEFORE DELETE ON Team FOR EACH ROW
BEGIN
    DELETE a FROM Playlist a
    INNER JOIN TeamPlaylist b ON a.id = b.id AND b.teamId = OLD.id;
END$$
DELIMITER ;

Những gì các trình kích hoạt này sẽ làm là mỗi khi một bản ghi bị xóa khỏi một trong các bảng này, DELETE hoạt động sẽ tự động thực thi trên Playlists bảng sử dụng id sắp bị xóa (thông qua liên kết bên trong).

Tôi đã thử nghiệm điều này và nó hoạt động rất tốt.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL truy vấn chậm với tham gia mặc dù EXPLAIN cho thấy kế hoạch tốt

  2. Công cụ dòng lệnh tải hàng loạt MySql

  3. Hàm IF trong H2 để tương thích với MySQL

  4. NetSuite Migrations

  5. Các chỉ mục InnoDB trước và sau khi nhập