我正在处理一个包含许多相关表的数据库,我最近(昨天)了解到为了让我的相关列在我更改PARENT键时自动更新,我需要将关系设置为“On”更新“约束。但是,我越是通过我的PHPMyAdmin接口研究如何做到这一点,我就越发现我在我的PHPMyAdmin版本中遗漏了一些东西。
显然我应该可以通过“结构”标签下的“关系视图”来完成此操作。问题是,我没有那个选项(见img)
您看到的是该页面上的所有内容。
在挖掘了一点之后,我意识到如果我浏览我的“Designer”页面(见img):
然后我可以访问实际上谈论“On Update”的内容(参见img)
现在唯一的问题是我似乎无法用“On Update”“创建”我的关系,因为这些外交关系已经存在。 (头服务台)
问题:
1.)为什么我的“关系视图”下没有“ON UPDATE”选项显然应该是什么?我正在使用 MAMP 3.2.1 和 PHPMyAdmin 4.4.1.1 (最新版本),而我的存储引擎是 InnoDB 。
2.)鉴于,除了使用SQL之外还有什么方法可以通过我的PHPMyAdmin接口将“ON UPDATE”约束添加到我现有的外键中吗?
3.)如果没有,那么为了“手工”这样做我需要什么SQL。通用的例子没问题。
更新
所以我决定尝试删除我的一些关系,以便将它们重新连接到看似具有我想要的DESIGNER界面。但是,当我这样做并尝试创建连接时,我得到了这个:
我的“ON UPDATE”选项发生了什么变化?!
答案 0 :(得分:1)
我和phpmyadmin有很多这样的问题。所以我建议你下载Mysql工作台并使用它而不是phpmyadmin。工作台比php我的管理员更好。在这里下载
答案 1 :(得分:1)
好的,我能够弄明白我的问题。好吧,不是我的 问题 ,我仍然不知道为什么我在PHPMyAdmin的RELATION VIEW中没有CONSTRAINT字段。但我能够找到解决方法。 Jiji John 建议我下载MySQL Workbench,我做了但最初无法弄清楚如何工作。然后我意识到它不起作用的原因是因为我犯了很多错误。这是有道理的,我还是很陌生。但我对MySQL Workbench界面仍然不太满意。我不觉得它像PHPMyAdmin一样直观。
所以这就是我将所有(多个)表转换为ON UPDATE CASCADE所做的。我确信有更有效的方法可以做到这一点,但至少可以做到这一点:
由于所有SQL尝试似乎都遇到了我当前所有表的问题,因此我通过PHPMyAdmin的“操作”选项卡逐个将每个表逐个复制到新数据库。
首先,我复制了没有任何外键的Referenced Tables,我添加了前缀NFK(No Foreign Keys),因此我可以直观地参考哪些表格没有&#39我需要搞砸。
在我复制了所有NFK表之后,我按照需要最少到最大量外键的顺序处理剩余的表。
首先,我只将表格结构(无数据)从第一个数据库复制到第二个数据库。
我知道这有点模糊,但我是一个非常直观的人,特别是涉及到我不明白的事情。所以我希望所有这些图形都可以帮助那些像我一样遇到麻烦的人。我对图像的大小有所了解。我只是从我的电脑上拍摄屏幕截图,我不知道我是如何让它们变小的。 。
答案 2 :(得分:0)
您可能正在使用MyIsam
作为存储引擎。
这不支持外键约束。查看我的任何数据库中的MyIsam
表格都与截图相同。
相同的服务器,相同的数据库,但innodb
引擎提供: