【问题标题】:Adding constraints in phpMyAdmin在 phpMyAdmin 中添加约束
【发布时间】:2012-03-18 23:19:10
【问题描述】:

我觉得我很愚蠢,但是我在 phpMyAdmin 界面上找不到任何地方来为外键添加约束,例如级联删除

我在这里和 phpMyAdmin wiki 上寻找过类似的问题,但我找不到任何相关信息。

我知道我可以通过查询界面执行此操作,但我想知道如何通过图形界面执行此操作。

【问题讨论】:

  • 我发现了,但没有帮助。不过现在问题解决了。
  • 哦,是的,两个表(具有 FK 的表和引用的表应该是 InnoDB,或者在另一个事务引擎中)。

标签: mysql foreign-keys phpmyadmin relational-database


【解决方案1】:

首先,您的存储引擎应该是 InnoDB。然后选择一个表并转到“结构”选项卡。

在表格下方,您将看到“关系视图”,点击它。从那里你可以添加约束。

【讨论】:

  • 啊,谢谢,存储引擎设置错误,所以我无法添加约束。
  • 欢迎你,亚历克斯。很高兴我能帮上忙。
  • 我看到“+Indexes”,没有看到“关系视图”。请帮助设置外键约束。
  • 只有当您的存储引擎设置为 InnoDB 时,您才会看到“关系视图”。
【解决方案2】:

级联

每当主(引用)表中的行被删除(相应更新)时,具有匹配外键列的子(引用)表的相应行也将被删除(相应更新)。这称为级联删除(resp. update[2])。

限制

当外键表中存在引用被引用表中的值的行时,无法更新或删除该值。同样,只要有外键表中的引用,就不能删除行。

无操作

NO ACTION 和 RESTRICT 非常相似。 NO ACTION 和 RESTRICT 之间的主要区别在于,使用 NO ACTION 时,参照完整性检查是在尝试更改表后完成的。 RESTRICT 在尝试执行 UPDATE 或 DELETE 语句之前进行检查。如果引用完整性检查失败,这两个引用操作的行为相同:UPDATE 或 DELETE 语句将导致错误。

设置为空

更新或删除引用行时,引用行中的外键值设置为 NULL。这只有在引用表中的相应列可以为空时才有可能。由于 NULL 的语义,外键列中有 NULL 的引用行不需要引用行。

【讨论】:

    【解决方案3】:

    首先,你应该选择存储引擎为 InnoDB。

    按照这个方法:点击database_name -> More -> Designer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-06
      • 2014-11-17
      • 2019-12-31
      • 2019-06-04
      • 2017-12-01
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      相关资源
      最近更新 更多