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 ...
随机推荐
- 51单片机(STC89C52)在Ubuntu下的开发
简介 都是8051衍生的8位单片机, STC单片机有89/90/10/11/12/15这几个大系列, 每个系列的特点如下 89系列是传统的8051单片机, 烧录方法有区别, 但是功能上可以和AT89系 ...
- 【Lua】ToLua逻辑热更新
1 前言 Lua基础语法 中系统介绍了 Lua 的语法体系,xLua逻辑热更新 中介绍了 xLua 的应用,本文将进一步介绍 Unity3D 中基于 ToLua 实现逻辑热更新. 逻辑热更新是 ...
- Python之初级RPG小游戏
在国外网站上找到一个练习Python的小游戏感觉不错,自己实现了一下. 通过该练习你能学到: 元组 字典 简单定义函数和封装 条件控制语句 游戏说明 以下是3个房间和1个花园: Hall 客厅 有一把 ...
- 【Map】【List】【数组】获得两个数组的交集
给定两个数组,编写一个函数来计算它们的交集. 示例 1: 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2,2] 示例 2: 输入: nums1 = [1,2,2 ...
- 标准运算符替代函数之operator模块
# 官网参考示例地址 https://docs.python.org/zh-cn/3/library/operator.html # operator模块提供了一套与python的内置的运算符对应的高 ...
- 数据分析day02
案例 需求:双均线策略制定 1.使用tushare包获取某股票的历史行情数据 2.计算该股票历史数据的5日均线和30日均线 - 什么是均线? - 对于每一个交易日,都可以计算出前N天的移动平均值,然后 ...
- CGI, FastCGI, WSGI, uWSGI, uwsgi一文搞懂
中间件 1.服务器中间件:nginx,apache 2.数据库中间件:介于应用程序和数据库之前的,MyCat 3.消息队列中间件:kafka,rabbitmq,Rocketmq CGI 1.CGI是一 ...
- 05、etcd 读请求执行流程
本篇内容主要来源于自己学习的视频,如有侵权,请联系删除,谢谢. 1.etcd读请求概览 etcd是典型的读多写少存储,在我们实际业务场景中,读一般占据2/3以上的请求.一个读 请求从client通过R ...
- SpringBoot Starter大全
spring Boot应用启动器基本的一共有44种,具体如下 1)spring-boot-starter 这是Spring Boot的核心启动器,包含了自动配置.日志和YAML. 2)spring-b ...
- [Linux] rockylinux9.1 的部署使用过程 -- ZFS 虚拟机 cockpit podman samba
备选镜像 | Rocky Linux rocky linux 使用记录 - 个人文章 - SegmentFault 思否 # https://blog.csdn.net/NeverGUM/articl ...