查找PostgreSQL数据库中表,过程,函数使用的特定列的所有出现位置

时间:2017-05-12 04:59:28

标签: sql postgresql postgresql-9.5

我们正在将字符(备注)类型从字符(9)更改为 varchar(50)。我们有数千个表,函数,过程和mviews。我想识别使用此列的所有位置,即(表,函数,过程,索引,mviews)。是否有任何查询来查找列的位置。

1 个答案:

答案 0 :(得分:1)

如果你一直保持命名约定在模式中具有唯一的列名,那么它就可以选择。

  1. 表:

    select table_name 
    from information_schema.columns 
    where column_name = 'notes';
    
  2. 功能,程序:

    select proname 
    from pg_proc 
    where prosrc like '%notes %';
    
  3. mviews和观点:

    select * from pg_matviews where definition like '%notes%';
    select * from pg_views where definition like '%notes%';
    
  4. 当然,这种方法的效率完全取决于您对列的调用方式。从您提供的名称注释,我认为它会很低。