Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Hapus data persimpangan secara otomatis bersama dengan DELETE catatan?

Deklarasikan tindakan referensial:ON DELETE CASCADE, misalnya:

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]

Cukup menarik, tampaknya menentukan tindakan referensial dalam sintaks kunci asing "shorthand" tidak berfungsi (dikonfirmasi di bawah MySQL 5.5.30, 5.6.6 m9). Berikut ini diuraikan, tetapi ketika user dihapus, user_offer yang sesuai tidak terhapus:

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. MySQL:Bisakah saya melakukan join kiri dan menarik hanya satu baris dari tabel join?

  2. bendera 'aktif' atau tidak?

  3. Bagaimana cara mendapatkan id setelah INSERT ke database MySQL dengan Python?

  4. masalah dengan nama kolom 'ketik' di Rails 3

  5. Perbarui satu baris, tetapi masukkan jika baris tidak ada di codeigniter