为什么我在 PHPMyAdmin 上的 "Relation View" 中没有 "On Update" 约束?

Why Don't I have "On Update" constraints in my "Relation View" on PHPMyAdmin?

我正在处理一个包含许多相关表的数据库,我最近(昨天)了解到,为了在我对 PARENT 键进行更改时让我的相关列自动更新,我需要设置关系"On Update" 约束。但是,我对如何通过我的 PHPMyAdmin 界面执行此操作的研究越多,我就越意识到我在我的 PHPMyAdmin 版本中遗漏了一些东西。

显然我应该可以通过 "Structure" 选项卡下的 "Relation View" 来完成此操作。问题是,我没有那个选项(见 img)

您看到的是该页面上的所有内容。

在进一步挖掘之后,我意识到如果我浏览我的 "Designer" 页面(参见 img):

然后我就可以访问一些真正谈论 "On Update" 的东西(参见 img)

现在唯一的问题是我似乎无法 "Create" 我与 "On Update" 的关系,因为这些外国关系已经存在。 (总部)

问题:

1.) 为什么我的 "Relation View" 下没有 "ON UPDATE" 选项,它显然应该在什么地方?我正在使用 MAMP 3.2.1PHPMyAdmin 4.4.1.1(最新版本),我的存储引擎是 InnoDB.

2.)鉴于此,除了使用 SQL 之外,还有什么方法可以通过我的 PHPMyAdmin 界面向我现有的外键添加 "ON UPDATE" 约束?

3.)如果不是,我需要什么 SQL 才能做到这一点 "By Hand"。通用示例就可以了。

更新:

所以我决定尝试删除我的一些关系,以便将它们重新连接到 DESIGNER 界面,它似乎有我想要的东西。但是,当我这样做并尝试创建连接时,我得到了这个:

我的 "ON UPDATE" 选项怎么了?!

您可能正在使用 MyIsam 作为存储引擎。

不支持外键约束。在我的任何数据库中查看 MyIsam table 都会得到与您的屏幕截图相同的结果。

相同的服务器,相同的数据库,但 innodb 引擎给出:

我在使用 phpmyadmin 时遇到过很多这样的问题。所以我建议您下载 Mysql workbench 并使用它来代替 phpmyadmin。工作台比 php 我的管理员好得多。在这里下载

https://www.mysql.com/products/workbench/

好的,我能够找出我的问题。嗯,不是我的问题,我仍然不知道为什么我在 PHPMyAdmin 的关系视图中没有约束字段。但我想出了一个解决办法。 Jiji John 建议我下载 MySQL Workbench,我下载了,但一开始不知道如何工作。然后我意识到它不起作用的原因是因为我犯了很多错误。这是有道理的,我对此还是很陌生。但我对MySQL Workbench 界面还是不太满意table。我觉得它不如 PHPMyAdmin 直观。

所以这就是我将所有(许多)tables 转换为 ON UPDATE CASCADE 的方法。我确信有一种更有效的方法可以做到这一点,但至少已经完成了:

  1. 由于所有 SQL 尝试似乎都与我当前的所有 table 有问题,我将每个 table 逐一复制到通过 PHPMyAdmin 的操作选项卡新建数据库。

    首先,我复制了没有任何外键的引用表,并在其中添加了前缀 NFK(无外键),这样我就有了一个视觉参考 tables 我不需要惹。

  1. 在我复制了所有 NFK tables 之后,我按照需要最少到最多外键的顺序处理剩余的 tables .

  2. 首先,我只将 table 结构 (无数据)从第一个数据库复制到第二个数据库。

  3. 然后我会转到 MySQL Workbench 添加必要的外键和 ON UPDATE 约束,因为 PHPMyAdmin 不会为我做这些。

  4. 之后,我将从原始 table 复制导出 SQL 并将其粘贴到第二个数据库的 SQL 字段中。

  1. 最后,我将前缀 OUC(On Update Cascade)添加到新的 table,这样我就知道我已经完成了,然后我将隐藏 table旧数据库,所以我知道我已经完成了那个。

我知道这有点沉重,但我是一个非常注重视觉的人,尤其是当涉及到我不理解的事情时。所以我希望所有这些图表能帮助像我一样遇到麻烦的人。我对图像的大小表示歉意。我只是从我的电脑上截屏,我不确定如何让它们变小。 . .