KingbaseES 通过触发器实现查看表的创建时间
从oracle迁移至KingbaseES的用户,经常会问在KingbaseES中怎么查询表的创建时间。
由于KingbaseES本身并不直接存储表的创建时间,所以获取这一信息通常需要依赖于间接方法或日志记录。
如果确实有这种需求,可以通过创建事件触发器的将相关的信息保存下来。
建立保存信息的数据表
CREATE TABLE table_ddl_info(
id serial PRIMARY KEY,
object_type varchar(100),
schema_name VARCHAR(50),
action_name name NOT NULL,
object_name varchar(100),
statime timestamp with time zone );
创建事件触发器将
CREATE OR REPLACE FUNCTION get_ddl_time_func() RETURNS event_trigger
LANGUAGE plpgsql AS $$
DECLARE
obj record;
BEGIN
FOR obj IN SELECT * FROM sys_event_trigger_ddl_commands() LOOP
INSERT INTO table_ddl_info (object_type, schema_name,action_name,object_name,statime)
SELECT obj.object_type, obj.schema_name, obj.command_tag,obj.object_identity,now();
END LOOP;
END;
$$;
CREATE EVENT TRIGGER get_tab_ddl_trigger ON ddl_command_end
EXECUTE PROCEDURE get_ddl_time_func();
CREATE OR REPLACE FUNCTION get_tab_for_drops() RETURNS event_trigger
LANGUAGE plpgsql AS $$
DECLARE
obj record;
BEGIN
FOR obj IN SELECT * FROM sys_event_trigger_dropped_objects() LOOP
INSERT INTO table_ddl_info (object_type, schema_name,action_name,object_name,statime)
SELECT obj.object_type, obj.schema_name,tg_tag,obj.object_identity,now();
END LOOP;
END;
$$;
CREATE EVENT TRIGGER get_tab_trigger_for_drops ON sql_drop
EXECUTE PROCEDURE get_tab_for_drops();
测试
test=# create table create_table_test (id int);
CREATE TABLE
test=# alter table create_table_test add (name varchar(10));
ALTER TABLE
test=# grant select on create_table_test to u1;
GRANT
test=# select * from table_ddl_info;
id | object_type | schema_name | action_name | object_name | statime
----+-------------+-------------+--------------+--------------------------+-------------------------------
2 | table | public | CREATE TABLE | public.create_table_test | 2023-12-20 15:35:07.757425+08
3 | table | public | ALTER TABLE | public.create_table_test | 2023-12-20 15:35:27.994804+08
4 | TABLE | | GRANT | | 2023-12-20 15:36:51.347843+08
(3 行记录)
test=# drop table create_table_test;
DROP TABLE
test=# select * from table_ddl_info;
id | object_type | schema_name | action_name | object_name | statime
----+-------------+-------------+--------------+----------------------------+-------------------------------
2 | table | public | CREATE TABLE | public.create_table_test | 2023-12-20 15:35:07.757425+08
3 | table | public | ALTER TABLE | public.create_table_test | 2023-12-20 15:35:27.994804+08
4 | TABLE | | GRANT | | 2023-12-20 15:36:51.347843+08
5 | table | public | DROP TABLE | public.create_table_test | 2023-12-20 15:48:37.146019+08
6 | type | public | DROP TABLE | public.create_table_test | 2023-12-20 15:48:37.146019+08
7 | type | public | DROP TABLE | public.create_table_test[] | 2023-12-20 15:48:37.146019+08
(6 行记录)
KingbaseES 通过触发器实现查看表的创建时间的更多相关文章
- mysql命令 SHOW TABLE STATUS LIKE '%city%'; 查看表的状态可以查看表的创建时间
show status like '%handler_read_key%'; #走索引的命令的数量. #查看存储引擎 mysql> show variables like '%engine%'; ...
- 怎么查看HBase表的创建时间
前几天HBase出现了RIT告警,忽然发现发出告警的Region所属的表并不是我创建出来的,于是就想看看这些表是怎么来的. 一时也没什么头绪,就先看看这些表是什么时候创建出来的吧,然后再根据时间点看看 ...
- MySQL查看数据表的创建时间和最后修改时间
如何MySQL中一个数据表的创建时间和最后修改时间呢? 可以通过查询information_schema.TABLES 表得到信息. 例如 mysql> SELECT * FROM `infor ...
- 修改SQL Server数据库表的创建时间最简单最直接有效的方法
说明:这篇文章是几年前我发布在网易博客当中的原创文章,但由于网易博客现在要停止运营了,所以我就把这篇文章搬了过来,因为这种操作方式是通用的,即使是对现在最新的SQL Server数据库里面的操作也是一 ...
- JPA注解实体类,给表添加创建时间,更新时间,id的生成以及创建唯一约束
首先创建一个BaseModel,自动生成创建时间和更新时间 @SuppressWarnings("serial") @MappedSuperclass public class B ...
- linux 查看帐号创建时间
查看用户的home目录的创建时间 查看日志 用stat 命令,可以看到目录的三个时间.不过这个时间只是用来参考的,确定一个范围. 查看日志是最准确的方法 /var/log/auth.log ,前提是你 ...
- spring data jpa之Auditing 表的创建时间,更新时间自动生成策略
java实际编程中,几乎每一张表都会有createTime和updateTime字段,spring的优秀之处在于只要用几个注解,就帮我们解决该类问题,具体实现: 1,实体类添加注解: @EntityL ...
- Oracle查看数据库表的创建时间
select OBJECT_NAME, CREATED from DBA_OBJECTS obj, USER_TABLES tab where obj.OBJECT_NAME = tab.TABLE_ ...
- mysql表的创建、查看、修改、删除
一.创建表 创建表前先使用use 数据库名进入某一个数据库,创建表语句的格式如下: create table 表名称 ( 列名1 列的数据类型 [约束], 列名2 列的数据类型 [约束], 列名2 列 ...
- postgresql获取表最后更新时间(通过触发器将时间写入另外一张表)
通过触发器方式获取表最后更新时间,并将时间信息写入到另外一张表 一.创建测试表和表记录更新时间表 CREATE TABLE weather( city varchar(80), temp_lo int ...
随机推荐
- Ubuntu20.04 PyCharm不能输入中文的解决办法
在2020.3之后的PyCharm, 无法输入中文, 我使用的是ibus, 据网上搜索结果看, fctix也一样有问题. 在网上查到的, 修改环境变量的方式无效. 实际的原因在于JetBrain使用的 ...
- Vue中data为何以函数形式返回
data为何以函数形式返回 在使用Vue构建组件化应用时,每个组件的data属性都是以函数形式返回的,这主要是在组件化实现的时候,每个实例可以维护一份被返回对象的独立的拷贝,而不是共享同一个对象的引用 ...
- 解决etcd集群空间占用问题 mvcc: database space exceeded
一.查看状态 ./etcdctl --write-out=table endpoint status 可以看到空间占用(DB SIZE).本次是清理过了.原本达到了2G(为默认上限) 二.查看当前版本 ...
- cdn缓存立刻刷新
现在例如有一个业务需求是客户更新图片,那我们需要及时更新,可是正常的上传是无法及时更新的,因为七牛云会有客户端缓存和cdn缓存,这时候可能有多种处理方式: 1.cdn和客户端缓存的时间调短,例如1 ...
- Golang从入门到跑路-从基础到微服务学习路线图
收录的awesome-go项目,学习基础系列,go项目实战,go源码分析,go开发者成长路线图等等,把他们收集起来学习. 地址:https://github.com/jiujuan/go-collec ...
- render_to_string快捷函数,渲染模板字符串
# views.py from django.template.loader import render_to_string from django.http import HttpResponse ...
- 基于java的个人博客
基于java的个人博客 效果预览 首页 详情 文章管理 文章发布 分类管理 访问地址 前台地址http://localhost:8080 后台地址:http://localhost/admin/ 开发 ...
- docker开发
Docker docker介绍 Docker是一个客户端-服务器(C/S)架构程序.本质上是通过go语言对lxc技术的一个封装,遵守Restful规范 docker hub注册一个账号(用来拉取镜像) ...
- 【LeetCode字符串#01】反转字符串I+II
反转字符串 力扣题目链接(opens new window) 编写一个函数,其作用是将输入的字符串反转过来.输入字符串以字符数组 char[] 的形式给出. 不要给另外的数组分配额外的空间,你必须原地 ...
- 【Azure Function App】在ADF(Azure Data Factory)中调用 Azure Function 时候遇见 Failed to get MI access token
问题描述 在ADF(Azure Data Factory)中,调用Azure Function App中的Function,遇见了 Failed to get MI access token Ther ...