【问题标题】:Why do I get a DELETE ON cascade syntax error为什么我会收到 DELETE ON 级联语法错误
【发布时间】:2020-08-08 12:03:22
【问题描述】:

我正在尝试让我的消息系统中的组删除组、消息和使用删除级联错误的成员。我的代码:

"CREATE TABLE `groups` (
          groups_id int AUTO_INCREMENT PRIMARY KEY,
          owner_id int NOT NULL,
          group_name varchar(255)
        )",
  "CREATE TABLE `groups_members` (
          groups_members_id int AUTO_INCREMENT PRIMARY KEY,
          groups_id int NOT NULL,
          user_id int,
          FOREIGN KEY (groups_id)
              REFERENCES groups(groups_id)
              DELETE ON CASCADE
        )",
  "CREATE TABLE `groups_contents` (
          groups_contents_id int AUTO_INCREMENT PRIMARY KEY,
          user_id int,
          groups_id int,
          date_time DATETIME,
          message varchar(1000),
          FOREIGN KEY (groups_id)
              REFERENCES groups(groups_id)
              DELETE ON cascade
        )"

它给我的错误: STATEMENT [CREATE TABLE groups_members (groups_members_id int AUTO_INCREMENT PRIMARY KEY, groups_id int NOT NULL, user_id int, CONSTRAINTbanana FOREIGN KEY (groups_id) REFERENCES groups(groups_id) DELETE ON CASCADE)]您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解在第 8 行的“DELETE ON CASCADE)”附近使用的正确语法

【问题讨论】:

  • 我不明白你的代码为什么用逗号分隔并用双引号括起来。其次,您的最后一个字符串不起作用,因为您错过了 CREATE TABLE 部分
  • 基本上就是一个要执行的语句数组,所以用逗号隔开

标签: mysql


【解决方案1】:

您的代码中有一些小错误

Groups 是保留字,所以必须用反引号。

语法是 ON DELETE 而不是 DELETE ON

CREATE TABLE `groups` (
    groups_id INT AUTO_INCREMENT PRIMARY KEY,
    owner_id INT NOT NULL,
    group_name VARCHAR(255)
);
CREATE TABLE `groups_members` (
          groups_members_id int AUTO_INCREMENT PRIMARY KEY,
          groups_id int NOT NULL,
          user_id int,
          FOREIGN KEY (groups_id)
              REFERENCES `groups` (groups_id)
              ON DELETE  CASCADE
        );
CREATE TABLE `groups_contents` (
          groups_contents_id int AUTO_INCREMENT PRIMARY KEY,
          user_id int,
          groups_id int,
          date_time DATETIME,
          message varchar(1000),
          FOREIGN KEY (groups_id)
              REFERENCES  `groups` (groups_id)
              ON DELETE  cascade
        );        

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-04
    • 2022-01-23
    • 2021-06-20
    • 2017-01-16
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    • 2021-04-30
    相关资源
    最近更新 更多