为什么我在PHPMyAdmin的“关系视图”中没有“更新”约束?

问题描述:

我正在处理一个有很多相关表的数据库,最近我(昨天)了解到,为了让我的相关列在更改PARENT键时自动更新,我需要将关系设置为“更新“约束。但是,我越来越多地研究如何通过我的PHPMyAdmin接口来实现这一点,我越发觉到我的PHPMyAdmin版本中缺少了某些内容。为什么我在PHPMyAdmin的“关系视图”中没有“更新”约束?

显然我应该能够我的“结构”选项卡下,通过“关系搜索”做到这一点。问题是,我没有那个选项(见图片)

enter image description here

你看到的是所有的可用该网页上。

周围一点点挖多后,我意识到,如果我通过我的“设计师”页面(见图片):

enter image description here

那么我就能够访问的东西,实际上谈“在更新”(见图片)

enter image description here

现在唯一的问题是,我似乎不能,因为这些外交关系已经存在于“创建”我有关系“在更新”。 (头服务台)

问题:

1)为什么我没有在那里它显然应该是我的“关系视图”中的“ON UPDATE”选项?我正在使用MAMP 3.2.1PHPMyAdmin 4.4.1.1(最新版本)和我的存储引擎是InnoDB。鉴于

2),有没有使用SQL,我可以通过我的phpMyAdmin界面添加了“ON UPDATE”约束到我的已经存在的外键以外的任何方式?

3)如果不是,那会是我需要在为了做到这一点“手动”的SQL。通用的例子会很好。

UPDATE:

所以我决定尝试删除一些我的关系,以便将它们与设计师界面,似乎有什么,我想重新连接。然而,当我这样做,并试图建立连接,我得到这个:

enter image description here

发生了什么事我的“ON UPDATE”选项?

+0

@RyanVincent - 我不太明白你在说什么。我在这里想要做的是,当我更新我的父键之一(例如,我昨天注意到有一个错字)时,我希望该更改级联到与其相关的任何外键。基于我读过的内容,我通过“On Update Cascade”来实现这一点,这正是我想要做的。 –

好吧,我能找出我的问题。那么,不是我的问题,我仍然不知道为什么我没有在我的RELATION VIEW中的CONSTRAINT字段在PHPMyAdmin。但我能够找到解决办法。 Jiji John建议我下载MySQL Workbench,但是我不知道如何工作。然后我意识到它不工作的原因是因为我犯了很多错误。这是有道理的,我仍然很新。但是我仍然不太熟悉MySQL Workbench接口。我不觉得它像PHPMyAdmin一样直观。

所以这就是我所做的将所有我的(许多)表转换为ON UPDATE CASCADE。我敢肯定有一个更有效的方式来做到这一点,但至少这让完成它:

  1. 由于所有SQL尝试似乎和我的所有现有表的问题,我个人复制的每个表中的一个通过PHPMyAdmin的操作选项卡逐个添加到新数据库。

    首先,我复制了没有任何外键的引用表,我在其中添加了前缀NFK(无外键),因此我可以直观地看到哪些表我不需要弄乱用。

​​ 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 hereenter image description here

    1. 最后,我想补充的前缀中央电大(在级联更新)到新表,所以我知道我做有了它,然后我会隐藏旧数据库中的表,这样我就会知道,我是做完这些。
    2. enter image description here

      我知道这是一个有点沉重的图形,但我是一个非常视觉化的人,特别是当它涉及到的东西我不明白。所以我希望所有这些图形能帮助像我一样有麻烦的人。我对图像的大小做了一些处理。我只是简单地从电脑上截屏,我不知道如何让它们缩小。 。 。

    开始=>
开始=“2”>

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

不支持外键约束。在我的任何数据库中查看MyIsam表,都可以获得与截图相同的结果。

同一台服务器,同一个数据库,但innodb引擎给:this

+0

@Axel Amthor - 如果你能看到这个img,你会发现我所有的桌子都是InnoDB http://i300.photobucket.com/albums/nn12/ladyesori1/Screen%20Shot%202015-07-11% 20at%2010.34.21%20 AM_zpskhqvmuln.png –

+0

您是否检查过http://docs.phpmyadmin.net/en/latest/config.html#cfg_Servers_relation设置? –

我有很多问题,像这样与phpMyAdmin。所以我建议你下载Mysql工作台并使用它来代替phpmyadmin。工作台比我的管理员更好。在这里下载

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

+0

如果我要下载MySQL工作台,我将如何去连接我的MAMP和本地主机到它? –

+0

这很容易,创建一个新的连接并添加您的主机名,mysql主机,端口和凭证。然后点击连接.. –

+0

我下载了工作台,并且实际上可以很容易地将它与我当前的数据库连接起来。但是,我发现它很麻烦,而不是实际运行它自己的SQL查询,它已经崩溃了两次。 –