【问题标题】:MySQL: get all references to another schemeMySQL:获取对另一个方案的所有引用
【发布时间】:2014-05-29 12:31:16
【问题描述】:

我有:两个方案scheme1scheme2

我想scheme1删除一些东西。

问题: scheme2 依赖于 scheme1,所以我无法删除我想要的内容。

问题: 有没有办法打印scheme2scheme1 中的所有依赖项?该怎么做?

问题2:如果您知道如何从所有方案中获取对some_table 的所有依赖项,那将是完美的。你知道吗?

【问题讨论】:

    标签: mysql sql relational-database database-schema


    【解决方案1】:

    回答第二个问题,如果是依赖于“some_table”的表:

    select TABLE_NAME 
    from information_schema.REFERENTIAL_CONSTRAINTS
    where REFERENCED_TABLE_NAME = <some_table>
    

    反过来:

    select REFERENCED_TABLE_NAME 
    from information_schema.REFERENTIAL_CONSTRAINTS
    where TABLE_NAME = <some_table>
    

    【讨论】:

      【解决方案2】:

      如果你的依赖是指外键,你可以检查:

      select * from information_schema.REFERENTIAL_CONSTRAINTS;
      

      【讨论】:

      • 不光是外键,还有View的依赖呢?
      【解决方案3】:

      您的第一个问题已经有了很好的答案。如果您使用的是 MySQL 5.0,则可以使用 information_schema.table_constraints,否则如果您使用的是 5.1 或更高版本,则可以使用 information_schema.referential_constraints

      dbo.stackexchange.com查看这个帖子

      https://dba.stackexchange.com/questions/5441/how-to-find-dependencies-on-a-table-in-mysql-5-0

      如果您的第二个查询是指查找表的依赖项,我认为您可以使用

      SHOW CREATE TABLE
      

      这将列出为特定表定义的所有外键约束。

      【讨论】:

      • 似乎 SELECT * FROM information_schema.REFERENTIAL_CONSTRAINTS 仅适用于当前模式的边界。当我在 shema2 中启动此脚本时,我没有在 REFERENCED_TABLE_NAME 中看到 schema1 中的任何表。你知道为什么吗?
      • @V_B,这不是真的。无论其架构如何,所有引用的表都将存在。仔细看。
      • 是的,你是对的。知道我知道有很多View依赖
      • @V_B,抱歉,没听懂。你在问另一个问题吗?
      • 不,我已经找到方法了:SELECT * FROM information_schema.VIEWS WHERE TABLE_NAME = some_name AND TABLE_SCHEMA = some_schema;
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      相关资源
      最近更新 更多