首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

PostgreSQL 使用递归SQL 找出数据库对象之间的依赖关系 - 例如视图依赖

背景: 在数据库中对象与对象之间存在一定的依赖关系,例如继承表之间的依赖,视图与基表的依赖,主外键的依赖,序列的依赖等等。...在删除对象时,数据库也会先检测依赖,如果有依赖,会报错,需要使用cascade删除。 另外一方面,如果需要重建表,使用重命名的方式是有一定风险的,例如依赖关系没有迁移,仅仅迁移了表是不够的。...所以迁移,通常使用的是增量迁移数据,同时使用替换filenode的方式更加靠谱,依赖关系不变。 本文将介绍一下如何查找依赖关系。...schema下也创建一个视图 =# create schema sm1; =# create view sm1.v1 as select * from pglog limit 10; 创建一个解析函数,得到依赖的...from get_dep_oids('sm1.v1'::regclass); get_dep_oids ────────────── {24971} (1 row) 再创建一个函数,递归的得到依赖的对象

1.4K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    说说maven依赖冲突,依赖调解,依赖传递和依赖范围

    说maven依赖冲突之前需要先说说maven的 依赖传递。 依赖传递 当前项目引入了一个依赖,该依赖依赖也会被引入项目。...更加准确的说法是,maven会解析直接依赖的POM,将那些必要的间接依赖,以传递依赖的形式引入到当前项目中。 为什么说是’必要的间接依赖‘呢?这是因为不是所有的间接依赖都会被引入的。...依赖范围除了控制classpath,还会对依赖传递产生影响。如果A依赖B,B依赖C,则A对于B是第一直接依赖。B对于C是第二直接依赖。A对于C是传递性依赖。...结论是:第一直接依赖的范围和第二直接依赖的范围决定了传递性依赖的范围。...依赖冲突和依赖调解 真是因为依赖传递,所以才带来了依赖冲突的可能。比如A->X(1.0),A->B->X(2.0)。A直接依赖了1.0版本的X,而A依赖的B依赖了2.0版本的X。

    1.2K30

    依赖注入: 依赖注入模式

    对于上面介绍的这三种注入方式,唯一构造器注入能够代码这个目的,而属性注入和方法注入都依赖于某个具体的DI框架来实现针对依赖属性的自动复制和依赖方法的自动调用。...,将针对服务实现的依赖转变成针对接口的依赖。...不论是采用属性注入或者构造器注入,还是使用Service Locator来提供当前依赖的服务,这无疑为当前的应用增添了一个新的依赖,即针对DI容器或者Service Locator的依赖。...当前服务针对另一个服务的依赖与针对DI容器或者Service Locator的依赖具有本质的不同,前者是一种基于类型的依赖,不论是基于服务的接口还是实现类型,这是一种基于“契约”的依赖。...这种依赖不仅是明确的,也是由保障的。

    1.6K40

    依赖注入:依赖注入模式

    作为服务对象提供者的依赖注入容器,它会根据这一依赖链提供所有的依赖服务实例。...如果类型A中具有一个B类型的字段或者属性,那么A就对B产生了依赖,所以我们可以将依赖注入简单地理解为一种针对依赖字段或者属性的自动化初始化方式。...,并将针对服务实现的依赖转变成针对接口的依赖。...不论是采用属性注入或者方法注入,还是使用Service Locator来提供当前依赖的服务,这无疑为当前的服务增添了一个新的依赖,即针对依赖注入容器或者Service Locator的依赖。...当前服务针对另一个服务的依赖与针对依赖注入容器或者Service Locator的依赖具有本质的不同,前者是一种基于类型的依赖,不论是基于服务的接口还是实现类型,这是一种基于“契约”的依赖

    1.5K30

    【Android Gradle 插件】Android 依赖管理 ④ ( 常用依赖配置分析 | implementation 依赖作用 | api 依赖作用 | compileOnly 依赖作用 )

    文章目录 一、compile 依赖作用 二、implementation 依赖作用 三、api 依赖作用 四、compileOnly 依赖作用 五、annotationProcessor 依赖作用 六...B 依赖库 , 最终 B 依赖库会打包到 A 项目的 Apk 文件中 ; 如果 C 项目 依赖 A 项目 , 由于 compile 配置会 传递依赖 , C 项目也需要将 B 依赖库导入到自己的依赖中...非常低 , 构建时会 不停的检查依赖树 , 发现依赖传递后 , 还要 添加依赖依赖 ; 二、implementation 依赖作用 ---- implementation 依赖作用 : 编译打包 :...依赖 B 依赖库 , 即 A 在 编译构建时需要 B 依赖库 , 最终 B 依赖库会打包到 A 项目的 Apk 文件中 ; 如果 C 项目 依赖 A 项目 , 由于 implementation 配置不会传递依赖..., 发现依赖传递后 , 还要 添加依赖依赖 ;因此 这两个 依赖方式 不常用 , implementation 依赖是当前最常见的依赖方式 ; 三、api 依赖作用 ---- api 依赖作用 :

    1.7K10

    fastapi 路径依赖项Depends 装饰器依赖dependencies 全局依赖 带 yield 的依赖

    依赖项 2. 类作为依赖 3. 子依赖项 3.1 多次使用同一个依赖项 4. 路径操作装饰器依赖项 5. 全局依赖项 6. 带 yield 的依赖项 7....也可以在异步的 async def 路径操作函数中声明普通的 def 依赖项 交互式文档里也会显示 依赖的参数 2....在同一个路径操作 多次声明了同一个依赖项,例如,多个依赖项共用一个子依赖项,FastAPI 在处理同一请求时,只调用一次该子依赖项,使用了缓存 如果不想使用「缓存」值,而是为需要在同一请求的每一步操作...路径操作装饰器依赖项 有时候,不需要依赖项的返回值,或者 有的依赖项 不返回值,但仍要指向或解析该依赖项 可以在路径操作装饰器中添加一个由 可选参数 dependencies 组成的 Depends()...全局依赖项 为 整个应用 添加依赖项,FastAPI(dependencies=[Depends(xxx), Depends(xx)]),所有的路径操作都依赖 dependencies 的内容 from

    2.5K30

    WPF依赖属性(wpf 依赖属性)

    一、什么是依赖属性 依赖属性就是一种自己可以没有值,并且可以通过绑定从其他数据源获取值。依赖属性可支持WPF中的样式设置、数据绑定、继承、动画及默认值。...将所有的属性都设置为依赖属性并不总是正确的解决方案,具体取决于其应用场景。有时,使用私有字段实现属性的典型方法便能满足要求。MSDN中给出了下面几种应用依赖属性的场景: 1....三、如何自定义依赖属性 1、声明依赖属性变量。依赖属性的声明都是通过public static来公开一个静态变量,变量的类型必须是DependencyProperty 2、在属性系统中进行注册。...使用DependencyProperty.Register方法来注册依赖属性,或者是使用DependencyProperty.RegisterReadOnly方法来注册 3、使用.NET属性包装依赖属性...: 输入propdp,连续按两下Tab健,自动生成定义依赖属性的语法。

    2.1K20

    【Android Gradle 插件】Android 依赖管理 ⑥ ( 依赖冲突处理 | transitive 依赖传递设置 | exclude 依赖排除设置 | force 强制指定依赖库 )

    四、通过 configuration 配置排除子依赖库 五、force 强制指定依赖库 一、查询 Android 依赖库的配置 ---- 在遇到 依赖冲突 时 , 如果要 排查某个依赖的子库 时 ,...就需要对该依赖库非常熟悉 , 最好是找出依赖库位置 , 并 分析该依赖库的 Maven 配置文件 , 即 pom.xml 配置文件 ; 下面以 com.android.support:appcompat-v7...* 属于此依赖项的工件本身可能依赖于其他工件。 * 后者称为传递依赖。 * * @param transitive 是否应解析可传递依赖项。...---- 针对依赖库冲突 : 依赖库 A 中 , 包含了 B , C 分库 , 它们的 所有版本都是 1.0 版本 , 这两个分库是无法分开的 ; 应用突然 单独的依赖了 2.0 版本的 B 依赖库...* * 排除特定的可传递依赖项并不保证它不会出现 * 在给定配置的依赖性中。 * 例如,没有任何排除规则的某些其他依赖项, * 可能会引入完全相同的传递依赖关系。

    3.1K31
    领券