pg查詢表所擁有的子表

2021-07-24 00:21:39 字數 1837 閱讀 2434

業務需求:

1.有兩個schema 分別為a,b

2.schema a下有一張表,叫做a;schema b下有一張表,叫做b,b繼承於a,即b為a的子表;其中表b.b可能存在,也可能不存在

在schema a進行刪除前,需要判斷它的表a是否存在與它不在同乙個schema內的子表;如果子表存在,則父表不進行刪除

可以清晰的看到,業務的難點,就是要得到schema a下的表a,它所擁有的子表schema名稱和表名。

要完成以上業務需求,需要查詢pg系統表。

由於子表使用inherits語法實現的,所以我們首先了解下pg_inherits表:

可以看到,pg_inherits表存了父表的oid和子表的oid

oid該如何得到呢?我們需要了解pg_class表

pg_class表裡有relname表示表名,那麼表所在的schema又如何確定呢?

可以清晰看到,就是用pg_namespace表的oid與pg_class表的relnamespace進行關聯,並且用pg_namespace表的namespace過濾指定schema名稱即可。

綜上所述,通過以上三張表,我們可以完成期待完成的業務。

1.使用pg_namespace,pg_inherits,pg_class三張表關聯,我們可以得到schema a的表a的子表名稱及schema oid

結果如下圖所示:

NSNumber 所擁有的類方法

nsnumber 所擁有的類方法,如下 nsnumber numberwithchar char value nsnumber numberwithint int value nsnumber numberwithfloat float value nsnumber mynumber,floatnu...

獲取AWS所擁有的公網IP列表

aws提供了所有區域的的所有服務所可能使用的ip列表段。url json檔案中主要資訊格式如下 region 所屬區域,如果是中國區域的話,是cn north 1 存在某兩個片段,只有service的值不一樣,其他都一樣的情況,例如 和 如果想要在ip位址段發生變化時及時收到通知,可以使用sns來訂...

騰訊所擁有的 使用者,使用者,還是使用者

不是我們這些做程式的 做it的,誰會去在乎tx創新不創新?他們更在乎的,是東西好不好用,聯絡朋友方便不方便。大家可以試試,問問你身邊的人,當然,不是你本行業的朋友,看看有幾個知道這個在我們it業鬧的沸沸揚揚的大論戰。再問問他們tx的創新問題,他們也許會說 某某東西不就是qq做出來的嗎?身邊就有很多例...