postgresql中如何判断一个对象是表还是视图?
2018-02-07 11:18
253 查看
我们知道Oracle中有object_type字段可以查看一个对象的类型,比如是表还是视图,在postgresql中如何查看呢?
首先,最简单的一种方式:
我们可以发现在对象名称前有Table的注明
如果是视图则如下:
同样的位置有View的注明。
第二种方式和Oracle查询类似:
通过pg_class(系统表)中的relkind字段来判断:
relkind
类型:char
分类:r =普通表,i =
索引,S =序列,v =
视图, c =复合类型,s =
特殊,t =TOAST表
判断表或视图是否存在:
BY 海无涯
首先,最简单的一种方式:
highgo=# \d+ ht1; Table "public.ht1" Column | Type | Modifiers | Storage | Stats target | Description --------+---------+--------------------------------------------------+---------+--------------+------------- id | integer | not null default nextval('ht1_id_seq'::regclass) | plain | | Replica Identity: FULL
我们可以发现在对象名称前有Table的注明
如果是视图则如下:
highgo=# \d+ pg_settings; View "pg_catalog.pg_settings" Column | Type | Modifiers | Storage | Description -----------------+---------+-----------+----------+------------- name | text | | extended | setting | text | | extended | ……
同样的位置有View的注明。
第二种方式和Oracle查询类似:
通过pg_class(系统表)中的relkind字段来判断:
highgo=# select relkind from pg_class where relname='ht1'; relkind --------- r (1 row) highgo=# select relkind from pg_class where relname='pg_settings'; relkind --------- v (1 row)
relkind
类型:char
分类:r =普通表,i =
索引,S =序列,v =
视图, c =复合类型,s =
特殊,t =TOAST表
判断表或视图是否存在:
select count(*) from pg_class where relkind='r' and relname='tablename'
select count(*) from pg_class where relkind='v' and relname='tablename'
BY 海无涯
相关文章推荐
- Javascript如何判断一个变量是普通变量还是数组还是对象?
- 编程如何判断一个对象在视图中可见?
- 如何判断变量是数组还是对象
- 如何判断一个操作系统是16位还是32位的?不能用sizeof()函数
- 如何判断一个C++对象是否在堆上(通过GetProcessHeaps取得所有堆,然后与对象地址比较即可),附许多精彩评论
- 如何判断一个js对象是否一个DOM对象
- 如何判断一个数为无符号数还是有符号数
- 用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof()函数?(不用sizeof()函数求当前主机上的一个int占用几个字节)
- js如何判断一个对象为空
- js如何判断一个对象是不是Array?
- js怎么判断一个对象是文本框(text)还是下拉框(select)
- 如何遍历一个对象所有的属性并判断属性值
- 如何判断一个js对象是否一个DOM对象
- 垃圾回收的依据,如何判断一个对象已经毫无用处
- 【JavaScript】如何判断一个对象是未定义的?(已解决)
- VBS中如何判断一个引用对象是否存在?
- 如何判断一个数为无符号数还是有符号数
- 判断一个变量类型是数组还是对象
- 如何判断一个C++对象是否在堆栈上
- 如何判断一个对象是否含有属性