【问题标题】:ERROR 1452: Cannot add or update a child row when adding root in a tree structure错误 1452:在树结构中添加根时无法添加或更新子行
【发布时间】:2021-07-15 09:53:27
【问题描述】:

我用这个查询创建了一个数据库:

CREATE TABLE progettoschemas.categories (
  id DOUBLE NOT NULL,
  name VARCHAR(255) NOT NULL,
  fatherid DOUBLE NOT NULL,
  PRIMARY KEY (id),
  FOREIGN KEY (fatherid) REFERENCES progettoschemas.categories(id) ON UPDATE CASCADE ON DELETE CASCADE)

因为我想要一个元素与其父 ID 相关的树结构。现在的问题是,我希望根具有以下参数: id=1 name=root Fatherid=0(fatherid=0 很重要,我不想更改它,因为如果我这样做,我将不得不修改很多我的代码),但显然 mysql 不允许我这样做,因为没有将 0 作为父亲的引用。有没有办法解决我的问题,维护我想要的参数,或者我必须以某种方式修改它们?

【问题讨论】:

  • 要么删除外键约束(你不应该),要么使列可以为空并在该行中保存NULL

标签: mysql create-table


【解决方案1】:

在不修改数据库结构的情况下没有找到任何有效的解决方案,所以我不得不将我的数据库更改为:

CREATE TABLE progettoschemas.categories (
  id DOUBLE NOT NULL,
  name VARCHAR(255) NOT NULL,
  fatherid DOUBLE,
  PRIMARY KEY (id),
  FOREIGN KEY (fatherid) REFERENCES progettoschemas.categories(id) ON UPDATE CASCADE ON DELETE CASCADE)

并添加了一个名为 root 的行,其 id=0 和 parentid=null

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-06
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    相关资源
    最近更新 更多