随笔分类 - PostgreSQL
摘要:问题背景 表的owner修改表的属主报错 问题模拟 create user user1 password 'user1'; create user user2 password 'user2'; -- 创建模式 create schema authorization user1; -- 创建测试表
阅读全文
摘要:基于user模型 模式和用户同名 只有一个模式 # postgres用户连接 psql -U postgres -c "create user test password 'test';" psql -U postgres -c "create database testdb with owner=
阅读全文
摘要:创建测试数据 psql -U postgres -c "create user test with password 'test';" psql -U postgres -c "create database testdb owner test" psql -U test -d testdb -c
阅读全文
摘要:创建测试数据 默认表空间示例数据 psql -U postgres -c "create user hr with password 'hr';" psql -U postgres -c "create database hrdb owner hr;" psql -U hr -d hrdb -c "
阅读全文
摘要:问题背景 用户反馈user2和read_only用户都能访问user1模式下的test_t表,但是系统表information_schema.table_privileges里面只有一条授权记录。 本地模拟和分析这个场景。 问题分析 创建测试数据 -- 创建用户 create user read_o
阅读全文
摘要:约束语法 CREATE [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] } ON table_name [ FROM referenced_table_name ] [ NOT DEFERR
阅读全文
摘要:问题背景 用户反馈删除序列失败,报锁超时的错误,排查发现因为该序列被使用,所以没法删除。 尝试kill持锁的会话,但是kill不掉,尝试重启数据库也失败,最终重启主机,启动数据库后才成功删除序列。 问题分析 检查发现序列定义有问题,用户使用navicat、dbeaver等图像界面修改序列当前值,由于
阅读全文
摘要:查询表预估占用的页数量 select relname,relpages from pg_class where relnamespace::regnamespace::text = '模式名' and relname = '表名'; 实际数据页数量 -- 实际占用的数据页 select count(
阅读全文
摘要:unix_timestamp MySQL 中的 unix_timestamp() 函数返回自 1970 年 1 月 1 日 UTC 时间以来的秒数。在 PostgreSQL 中,可以通过 EXTRACT 和 EPOCH 来获取这一信息。 CREATE OR REPLACE FUNCTION unix
阅读全文
摘要:创建表结构 drop table if exists history; drop table if exists history_str; drop table if exists history_log; drop table if exists history_text; drop table
阅读全文
摘要:生成测试数据 用到的函数 基本函数 函数 说明 string_agg() 是 聚合函数,用于将一列字符串连接成一个字符串 substring() 用于从一个字符串中提取子串,substring(string, start, length)其中,string: 要从中提取子串的原始字符串。start:
阅读全文
摘要:PostgreSQL视图权限问题 问题背景 用户发现在对视图进行查询的时候报错,提示没有视图基表的权限。 检查权限都是正常的,用户对视图和视图的基表都有select权限,对视图和视图的基表所在的模式也有usage权限。 本次模拟和分析该问题。 创建测试数据 create database testd
阅读全文
摘要:PostgreSQL批量修改对象owner 创建测试数据 psql -U postgres create user test password 'test'; create database testdb; \c testdb CREATE SCHEMA test AUTHORIZATION pos
阅读全文
摘要:PostgreSQL约束延迟生效 当我们对一张表上的数据进行操作时,如果该表上有约束存在,那么约束是在什么时候生效的呢? 例如我们在进行数据迁移的时候就会考虑的这个问题,有的迁移工具在迁移的时候必须得将表约束和数据分开迁移,否则会出现数据无法导入的情况,这就是因为约束不能延迟导致的。 那么pg中对于
阅读全文
摘要:PostgreSQL序列信息查询 说明: 在PostgreSQL数据库中序列和表都是序列的对象。 数据库中不应该存在孤儿序列,序列应该和表对应的字段绑定起来。绑定后删除表或表对应的字段后,序列会自动被删除。 创建测试表和序列 create table test_t(id int,name varch
阅读全文
摘要:PostgreSQL加密连接SSL配置 环境说明 操作系统 主机名 IP 类型 说明 CentOS Linux release 7.6.1810 (Core) centos7.6 192.168.1.150 PostgreSQL Server PostgreSQL 12.17 CentOS Linu
阅读全文
摘要:PostgreSQL系统表或视图中pg_node_tree类型值解析 pg_node_tree类型说明 pg_node_tree是一种openGauss/PostgreSQL内部数据类型,用于表示树形结构的数据。这个数据类型通常对用户不可见,因此直接查询或操作它的内容通常需要使用一些PostgreS
阅读全文
摘要:PostgreSQL中将对象oid转为对象名 使用pg的内部数据类型将对象oid转为对象名,可以简化一些系统视图的关联查询。 数据库类型转换对应类型的oid 可以用以下数据库类型转换对应类型的oid(以pg12为例) postgres=# select typname from pg_type wh
阅读全文
摘要:PostgreSQL模拟Oracle dba_objects查询出schema下所有的用户自定义对象 创建测试数据 psql -U postgres create user test password 'test'; create database testdb; \c testdb CREATE
阅读全文

浙公网安备 33010602011771号