Mysql
 sql >> база данни >  >> RDS >> Mysql

Да се ​​изтрият ли автоматично данните за кръстовището заедно с ИЗТРИВАНЕ на запис?

Декларирайте референтно действие:ON DELETE CASCADE, например:

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]

Интересно е, че изглежда, че уточняването на референтно действие в синтаксиса на "стенографски" външен ключ не работи (потвърдено при MySQL 5.5.30, 5.6.6 m9). Следното се анализира, но когато user се изтрива, съответният user_offer не се изтрива:

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. използвайки implode за масив в mysql където в клауза

  2. Грешка при инициализиране на MySQL база данни при Spring Boot със съхранени процедури

  3. Мога ли сляпо да заменя всички mysql_ функции с mysqli_?

  4. Функция MySQL MOD() – Извършване на модулна операция в MySQL

  5. Свържете Entity Framework с MYSQL във VS2019