从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 通过触发器实现查看表的创建时间的更多相关文章

  1. mysql命令 SHOW TABLE STATUS LIKE '%city%'; 查看表的状态可以查看表的创建时间

    show status like '%handler_read_key%'; #走索引的命令的数量. #查看存储引擎 mysql> show variables like '%engine%'; ...

  2. 怎么查看HBase表的创建时间

    前几天HBase出现了RIT告警,忽然发现发出告警的Region所属的表并不是我创建出来的,于是就想看看这些表是怎么来的. 一时也没什么头绪,就先看看这些表是什么时候创建出来的吧,然后再根据时间点看看 ...

  3. MySQL查看数据表的创建时间和最后修改时间

    如何MySQL中一个数据表的创建时间和最后修改时间呢? 可以通过查询information_schema.TABLES 表得到信息. 例如 mysql> SELECT * FROM `infor ...

  4. 修改SQL Server数据库表的创建时间最简单最直接有效的方法

    说明:这篇文章是几年前我发布在网易博客当中的原创文章,但由于网易博客现在要停止运营了,所以我就把这篇文章搬了过来,因为这种操作方式是通用的,即使是对现在最新的SQL Server数据库里面的操作也是一 ...

  5. JPA注解实体类,给表添加创建时间,更新时间,id的生成以及创建唯一约束

    首先创建一个BaseModel,自动生成创建时间和更新时间 @SuppressWarnings("serial") @MappedSuperclass public class B ...

  6. linux 查看帐号创建时间

    查看用户的home目录的创建时间 查看日志 用stat 命令,可以看到目录的三个时间.不过这个时间只是用来参考的,确定一个范围. 查看日志是最准确的方法 /var/log/auth.log ,前提是你 ...

  7. spring data jpa之Auditing 表的创建时间,更新时间自动生成策略

    java实际编程中,几乎每一张表都会有createTime和updateTime字段,spring的优秀之处在于只要用几个注解,就帮我们解决该类问题,具体实现: 1,实体类添加注解: @EntityL ...

  8. Oracle查看数据库表的创建时间

    select OBJECT_NAME, CREATED from DBA_OBJECTS obj, USER_TABLES tab where obj.OBJECT_NAME = tab.TABLE_ ...

  9. mysql表的创建、查看、修改、删除

    一.创建表 创建表前先使用use 数据库名进入某一个数据库,创建表语句的格式如下: create table 表名称 ( 列名1 列的数据类型 [约束], 列名2 列的数据类型 [约束], 列名2 列 ...

  10. postgresql获取表最后更新时间(通过触发器将时间写入另外一张表)

    通过触发器方式获取表最后更新时间,并将时间信息写入到另外一张表 一.创建测试表和表记录更新时间表 CREATE TABLE weather( city varchar(80), temp_lo int ...

随机推荐

  1. FTP命令详解(含操作实例)

    以下是微软命令行FTP客户端命令大全,如果你想使用"未加工(RAW)"FTP命令而非下面翻译过的请参考:http://www.nsftools.com/tips/RawFTP.ht ...

  2. 《深入理解Java虚拟机》(二) GC 垃圾回收机制

    @ 目录 一.概述 二.判断对象是否需要被回收方式 1.引用计数法: 2.可达性分析法: 三.垃圾收集算法 1.分代收集理论基础 2.标记-清除算法 3.复制-收集算法 4.标记-压缩(整理)算法 5 ...

  3. 实操开源版全栈测试工具RunnerGo安装(三)MacOS安装

    以Sonoma 14.1.2系统为例 视频教程:https://www.bilibili.com/video/BV1fG411e7h2/?spm_id_from=333.999.0.0 1.下载并安装 ...

  4. python-获得特定程序的屏幕截图并保存为文件

    import win32gui import win32ui import win32con name = "test.txt - Notepad" hwnd = win32gui ...

  5. 图书管理系统---基于form组件和modelform改造添加和编辑

    添加 基于form组件改造 步骤1 1.为了区分自己写的form类和视图逻辑,所以工作中需要区分开来,那么就可以在应用下创建一个叫utils的文件夹,专门存放我们写的form类,py文件名随便起 2. ...

  6. 使用grafana+Prometheus监控时PromQL内置函数详解

    1.Prometheus简介 Prometheus(中文名:普罗米修斯)是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB). Prometheus使用Go语言开发, 是Googl ...

  7. C++ STL 容器-Deque

    C++ STL 容器-Deque std::deque(双端队列)是C++标准模板库(STL)中的一个容器,它支持在序列的两端快速插入和删除元素.与std::vector和std::list等其他序列 ...

  8. C++ STL 容器-array类型

    C++ STL 容器-array类型 array是C++11STL封装的数组,内存分配在栈中stack,绝对不会重新分配,随机访问 创建和初始化 // 下面的等同于int a[10]; std::ar ...

  9. 制作有延迟插件的rabbitmq镜像

    插件Git官方地址:https://github.com/rabbitmq/rabbitmq-delayed-message-exchange Dockerfile FROM rabbitmq:3.8 ...

  10. 16 Educational Codeforces Round 142 (Rated for Div. 2)C. Min Max Sort(递归、思维、dp)

    C. Min Max Sort 很不错的一道题目,不过脑电波和出题人每对上,\(qwq.\) 正难则反. 我们考虑最后一步是怎么操作的. 最后一步一定是对\(1\)和\(n\)进行操作 那么上一步呢? ...