为什么我在PHPMyAdmin上的“关系视图”中没有“On Update”约束?

时间:2015-07-11 13:40:08

标签: php mysql phpmyadmin cascade relation

我正在处理一个包含许多相关表的数据库,我最近(昨天)了解到为了让我的相关列在我更改PARENT键时自动更新,我需要将关系设置为“On”更新“约束。但是,我越是通过我的PHPMyAdmin接口研究如何做到这一点,我就越发现我在我的PHPMyAdmin版本中遗漏了一些东西。

显然我应该可以通过“结构”标签下的“关系视图”来完成此操作。问题是,我没有那个选项(见img)

enter image description here

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

在挖掘了一点之后,我意识到如果我浏览我的“Designer”页面(见img):

enter image description here

然后我可以访问实际上谈论“On Update”的内容(参见img)

enter image description here

现在唯一的问题是我似乎无法用“On Update”“创建”我的关系,因为这些外交关系已经存在。 (头服务台)

问题:

1.)为什么我的“关系视图”下没有“ON UPDATE”选项显然应该是什么?我正在使用 MAMP 3.2.1 PHPMyAdmin 4.4.1.1 (最新版本),而我的存储引擎是 InnoDB

2.)鉴于,除了使用SQL之外还有什么方法可以通过我的PHPMyAdmin接口将“ON UPDATE”约束添加到我现有的外键中吗?

3.)如果没有,那么为了“手工”这样做我需要什么SQL。通用的例子没问题。

更新

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

enter image description here

我的“ON UPDATE”选项发生了什么变化?!

3 个答案:

答案 0 :(得分:1)

我和phpmyadmin有很多这样的问题。所以我建议你下载Mysql工作台并使用它而不是phpmyadmin。工作台比php我的管理员更好。在这里下载

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

答案 1 :(得分:1)

好的,我能够弄明白我的问题。好吧,不是我的 问题 ,我仍然不知道为什么我在PHPMyAdmin的RELATION VIEW中没有CONSTRAINT字段。但我能够找到解决方法。 Jiji John 建议我下载MySQL Workbench,我做了但最初无法弄清楚如何工作。然后我意识到它不起作用的原因是因为我犯了很多错误。这是有道理的,我还是很陌生。但我对MySQL Workbench界面仍然不太满意。我不觉得它像PHPMyAdmin一样直观。

所以这就是我将所有(多个)表转换为ON UPDATE CASCADE所做的。我确信有更有效的方法可以做到这一点,但至少可以做到这一点:

  1. 由于所有SQL尝试似乎都遇到了我当前所有表的问题,因此我通过PHPMyAdmin的“操作”选项卡逐个将每个表逐个复制到新数据库。

    首先,我复制了没有任何外键的Referenced Tables,我添加了前缀NFK(No Foreign Keys),因此我可以直观地参考哪些表格没有&#39我需要搞砸。

  2. enter image description here enter image description here

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

    2. 首先,我只将表格结构(无数据)从第一个数据库复制到第二个数据库。 enter image description here

    3. 然后我转到MySQL Workbench添加必要的外键和ON UPDATE约束,因为PHPMyAdmin不会为我做这件事。 enter image description here
    4. 之后,我将从原始表中复制导出SQL并将其粘贴到第二个数据库的SQL字段中。
    5. enter image description here

      enter image description here enter image description here

      1. 最后我会将前缀OUC(On Update Cascade)添加到新表中,以便我知道我已经完成了它,然后我将表隐藏在旧数据库上,以便我&#39 ; d知道我完成了这件事。
      2. enter image description here

        我知道这有点模糊,但我是一个非常直观的人,特别是涉及到我不明白的事情。所以我希望所有这些图形都可以帮助那些像我一样遇到麻烦的人。我对图像的大小有所了解。我只是从我的电脑上拍摄屏幕截图,我不知道我是如何让它们变小的。 。

答案 2 :(得分:0)

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

这不支持外键约束。查看我的任何数据库中的MyIsam表格都与截图相同。

相同的服务器,相同的数据库,但innodb引擎提供:this