2015-07-11 30 views
1

我正在处理一个有很多相关表的数据库,最近我(昨天)了解到,为了让我的相关列在更改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”来实现这一点,这正是我想要做的。 –

回答

1

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

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

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

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

​​ enter image description here

  • 我会复制我所有的NFK表后,我的工作顺序其余的表,需要最少到最大外键的数量。

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

  • 然后,我会去MySQL Workbench添加必要的外键和ON UPDATE约束,因为PHPMyAdmin不会为我做这件事。 enter image description here
  • 后,我会从原始表复制SQL输出并粘贴到第二个数据库的SQL领域。
  • enter image description here

    enter image description hereenter image description here

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

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

    0

    你可能正在使用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设置? –

    1

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

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

    +0

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

    +0

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

    +0

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

    相关问题