Почему я получаю УДАЛЕНИЕ при каскадной синтаксической ошибке

#mysql

#mysql

Вопрос:

Я пытаюсь заставить группы в моей системе обмена сообщениями удалять группу, сообщения и участников, используя удаление при каскадной ошибке. Мой код :

 "CREATE TABLE `&roups` (
          &roups_id int AUTO_INCREMENT PRIMARY KEY,
          owner_id int NOT NULL,
          &roup_name varchar(255)
        )",
  "CREATE TABLE `&roups_members` (
          &roups_members_id int AUTO_INCREMENT PRIMARY KEY,
          &roups_id int NOT NULL,
          user_id int,
          FOREIGN KEY (&roups_id)
              REFERENCES &roups(&roups_id)
              DELETE ON CASCADE
        )",
  "CREATE TABLE `&roups_contents` (
          &roups_contents_id int AUTO_INCREMENT PRIMARY KEY,
          user_id int,
          &roups_id int,
          date_time DATETIME,
          messa&e varchar(1000),
          FOREIGN KEY (&roups_id)
              REFERENCES &roups(&roups_id)
              DELETE ON cascade
        )"
  

Ошибка, которую это выдает мне: ОШИБКА При ВЫПОЛНЕНИИ ИНСТРУКЦИИ [CREATE TABLE &roups_members ( &roups_members_id int AUTO_INCREMENT PRIMARY KEY, &roups_id int NOT NULL, user_id int, ОГРАНИЧЕНИЕ banana FOREIGN KEY (&roups_id) ССЫЛАЕТСЯ НА группы (&roups_id), УДАЛЯЕМЫЕ ПРИ КАСКАДНОМ УДАЛЕНИИ )] У вас ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с ‘DELETE ПРИ КАСКАДНОМ УДАЛЕНИИ)’ в строке 8

Комментарии:

1. я не понимаю ваш код, почему строка разделена запятой и заключена в двойные кавычки. во-вторых, ваша последняя строка не работает, потому что вы пропустили часть СОЗДАНИЯ ТАБЛИЦЫ

2. По сути, это массив инструкций для выполнения, поэтому они разделены запятой

Ответ №1:

У вас есть несколько незначительных ошибок в вашем коде

Groups — это зарезервированное слово, поэтому оно должно быть в обратных значках.

Синтаксис находится при УДАЛЕНИИ, а не при УДАЛЕНИИ при

 CREATE TABLE `&roups` (
    &roups_id INT AUTO_INCREMENT PRIMARY KEY,
    owner_id INT NOT NULL,
    &roup_name VARCHAR(255)
);
CREATE TABLE `&roups_members` (
          &roups_members_id int AUTO_INCREMENT PRIMARY KEY,
          &roups_id int NOT NULL,
          user_id int,
          FOREIGN KEY (&roups_id)
              REFERENCES `&roups` (&roups_id)
              ON DELETE  CASCADE
        );
CREATE TABLE `&roups_contents` (
          &roups_contents_id int AUTO_INCREMENT PRIMARY KEY,
          user_id int,
          &roups_id int,
          date_time DATETIME,
          messa&e varchar(1000),
          FOREIGN KEY (&roups_id)
              REFERENCES  `&roups` (&roups_id)
              ON DELETE  cascade
        );