-
首先要理解: regclass是oid的别名,postgresql自动的为每一个系统表都建立了一个OId,其中有一个系统表叫做:pg_class,这个表里记录了数据表、索引(仍然需要参阅pg_index)、序列、视图、复合类型和一些特殊关系类型的元数据。注意:不是所有字段对所有对象类型都有意义。官方的解释如下:
-
来看一个例子:
SELECT * FROM pg_attribute WHERE attrelid = ‘mytable’::regclass;
而不用
SELECT * FROM pg_attribute
WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = ‘mytable’);
可以看出:其实, 这个“’mytable’::regclass”的作用就是等同于:select oid from pg_class where relname=’mytable’; 返回的是一个oid,所以叫做oid的别名。
-
再看一个例子:
rancs=> select oid,relname,reltuples from pg_class where oid=’test_1’::regclass;
oid | relname | reltuples
结果:
——-+———+———–
16416 | test_1 | 6
备注: ‘test_1’::regclass 这里将表名转换成表的 oid
4.相同用法的其他几个oid别名:
regproc,regprocedure,regoper, regoperator,regclass,和 regtype。下表显示了概要。
详细内容参考官方文档:
http://www.php100.com/manual/PostgreSQL8/datatype-oid.html
首先要理解: regclass是oid的别名,postgresql自动的为每一个系统表都建立了一个OId,其中有一个系统表叫做:pg_class,这个表里记录了数据表、索引(仍然需要参阅pg_index)、序列、视图、复合类型和一些特殊关系类型的元数据。注意:不是所有字段对所有对象类型都有意义。官方的解释如下: 来看一个例子: SELECT * FROM pg_attribute WHER
一,基础知识
oid用来在整个数据集簇中唯一标识一个数据库对象,对象可以是数据库、表、索引、视图、元组等等。
对于pg中的对象来说,oid与表名存在对象关系,这个关系我们可以从pg_
class
中得到。
二关于reg
class
reg
class
是一种数据类型,它实际上是oid的别名。相当于是oid和对象名之间的双向符号,既可以把oid翻译成表名,也可以把表名翻译成oid
通过使用::reg
class
, 我们就不需要通过查询pg_
class
表来获取对象与oid的对应关系了。
------把oid翻译成表
1.使用to_reg
class
函数(首选方法)速度最快,9.4或更高版本首选这个函数if( to_reg
class
('test') is null ) then
end if;或包含架构if( to_reg
class
('public.test') is null ) then
/*你的代码*/
end if;2.使用pg_
class
系统表if( (select 1 from pg_cl
postgresql
不同于mysql数据库,mysql建表时通过auto_increment关键字就可以实现主键自增, 但
postgresql
是通过序列和函数实现主键自动生成。
1、主键自增长
方法一:定义序列,再定义主键调用增长函数实现
CREATE SEQUENCE "public"."t_student_id_seq"
INCREMENT 1
MINVALUE 1
MAXVALUE 9999999999
START 1
CACHE 1;
在Navicat 工具中设置
postGreSql
表字段自增
提示:我们在设计表结构的过程中,有的时候不太愿意用sql的语法来创建表结构,而是在navicat中直接用新建的方式来创建表结构,但是发现在 Navicat 15 for
PostgreSQL
中,并没有设置主键自增的选项,如下图:
文章核心:我们要在已经有的表结构中去创建id为主键自增
一、示例表创建语法:
CREATE TABLE "public"."baj_test" (
"id" int4 NOT NULL,
"name" va
[Git高级教程(二)] 远程仓库版本回退方法
软萌切黑:
浅析ER图与UML图的区别
及锋而试:
left join查询可能出现重复数据 (主表中一条变两条)
weixin_44143718: