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

Tự động xóa dữ liệu đường giao nhau cùng với XÓA bản ghi?

Khai báo một hành động tham chiếu:ON DELETE CASCADE, ví dụ:

CREATE TABLE user (
    user_id int PRIMARY KEY
);

CREATE TABLE offer (
    offer_id int PRIMARY KEY
);

CREATE TABLE user_offer (
    user_id int,
    offer_id int,
    PRIMARY KEY (user_id, offer_id),
    FOREIGN KEY (user_id) REFERENCES user (user_id) ON DELETE CASCADE,
    FOREIGN KEY (user_id) REFERENCES offer (offer_id) ON DELETE CASCADE
);

[SQL Fiddle]

Thật thú vị, có vẻ như việc chỉ định hành động tham chiếu trong cú pháp khóa ngoại "tốc ký" không hoạt động (được xác nhận trong MySQL 5.5.30, 5.6.6 m9). Phần sau được phân tích cú pháp, nhưng khi user bị xóa, user_offer tương ứng không bị xóa:

CREATE TABLE user_offer (
    user_id int REFERENCES user (user_id) ON DELETE CASCADE,
    offer_id int REFERENCES offer (offer_id) ON DELETE CASCADE,
    PRIMARY KEY (user_id, offer_id)
);


  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ơ sở dữ liệu thiết kế cho danh mục, danh mục con và sách liên quan

  2. Làm thế nào để so sánh hai kết quả truy vấn cho bằng nhau trong MySQL?

  3. MySQL:Số lượng bản ghi với các tháng liên tiếp

  4. Nhận ngày, giờ và phút còn lại bằng mySql

  5. PHP:chèn nhiều giá trị hộp kiểm vào một cột MySQL