【问题标题】:MySQL: How to find where a specific primary key is used as a foreign key in other tables?MySQL:如何查找特定主键在其他表中用作外键的位置?
【发布时间】:2011-12-02 03:11:14
【问题描述】:

我正在努力实现一个功能,以防止在数据库中删除某些元素(通过前端),如果它们在其他表中有与它们相关联的其他项目。否则那些其他表正在寻找不存在的键。

如果你明白我的帽子是给你的。

我有 许多 组表要查看,并且需要 SQL 查询或 MySQL Workbench 功能来告诉我,在输入主键(列名,而不是实际值)时,如果该键在其他地方用作外键。

否则,如果有人知道临时解决方法,那也太好了!

【问题讨论】:

标签: mysql sql search foreign-keys primary-key


【解决方案1】:
SELECT 
  table_name, column_name     
FROM
  information_schema.key_column_usage
WHERE
  referenced_table_name = '<table>'
  and referenced_column_name = '<primary key column>'

【讨论】:

  • key_column_usage 不存在?
  • 这可能是因为您连接的用户名没有查看表格的访问权限..
  • 抱歉,打算更新,不得不重新打开我的界面,它卡在架构内(随机,不要问!)。无论如何,找到它并使用您的代码,但出现以下错误:错误代码:1054。“where 子句”中的“操作系统”列未知。操作系统是一个表名,在查询中位于referenced-table-name...
【解决方案2】:

this post 中描述了一种从 information_Schema 表中检索此信息的解决方案。

1) 如果您想从代码中处理这些表,请将它们作为容器获取,例如代码中的 ArrayList 并执行您的逻辑。

2) 如果您想在存储过程中处理这些表,请使用临时表来完成与通过容器在 java 代码中所做的相同的工作。

【讨论】:

  • 我正在使用 Hibernate 获取它们并将它们放入 ArrayList
猜你喜欢
  • 2014-05-05
  • 2012-07-11
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
  • 1970-01-01
  • 2017-03-10
相关资源
最近更新 更多