首页 > 其他分享 >KingbaseES 通过触发器实现查看表的创建时间

KingbaseES 通过触发器实现查看表的创建时间

时间:2024-03-28 15:47:28浏览次数:17  
标签:触发器 name 查看 object TABLE test table KingbaseES public

从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 行记录)

标签:触发器,name,查看,object,TABLE,test,table,KingbaseES,public
From: https://www.cnblogs.com/kingbase/p/17931051.html

相关文章

  • KingbaseES查找慢查询语句和阻塞会话
    在处理数据库性能问题时,识别和分析慢查询及阻塞会话是至关重要的步骤。数据库管理员和开发人员常常需要依赖特定的工具和查询语句来追踪这些性能瓶颈。当数据库响应变慢或出现处理延迟时,第一步通常是查找那些执行时间过长的查询,这些查询通常被称为“慢查询”。同时,阻塞会话即那......
  • KingbaseES自动生成列介绍
    在KingbaseES中createtable语句支持GENERATEDcolumn(生成列)。生成列是一种特别的列类型,它的值基于其他列的值计算得出。因此,生成列之于列,有点像视图之于表的关系。存在两种类型的生成列:存储生成列和虚拟生成列。存储生成列在数据被写入(插入或更新操作)时进行计算,并且像常规列......
  • KingbaseES LWLock buffer_mapping 等待
    在KingbaseES数据库中,会话在将数据块与共享缓冲池的缓冲区相关联时,会触发“LWLockbuffer_mapping”等待事件。这类事件涉及到一种轻量级锁(lwlock),类似于Oracle中的闩锁。这个锁在不同的数据库中可能有不同的名称,但通常被称为buffer_mapping或BufMappingLock。它主要用于实现对HAS......
  • KingbaseES V8R6集群运维案例之---主备failover切换原因分析
    案例说明:生产环境,KingbaseESV8R6的集群发生failover切换,分析集群切换的原因。适用版本:KingbaseESV8R6集群架构:137.xx.xx.67主原备库137.xx.xx.94原主库137.xx.xx.68vip地址一、日志分析1、分析原备库hamgr.log如下所示,通过原备库hamgr.log日志获取到具体......
  • KingbaseES V8R6数据库运维案例之---用户权限导致的备份恢复故障
    案例说明:由于限制了用户对数据库的访问,导致在执行‘sys_backup.shinit’初始化物理备份时,执行失败。适用版本:KingbaseESV8R6一、问题现象如下所示,执行‘sys_backup.shinit’初始化物理备份:1、执行初始化失败[kingbase@node201bin]$shsys_backup.shinitERROR:Con......
  • kafka命令工具创建查看topic信息
    转载:https://www.jianshu.com/p/6cf6c7f208c9 1、创建topic./bin/kafka-topics.sh--bootstrap-serverlocalhost:9092--create--topicfirst--partitions1--replication-factor1./bin/kafka-topics.sh--create--bootstrap-serverlocalhost:9092--replication-fa......
  • Fiddler(5)Statistics数据统计面板性能分析,Inspectors查看请求与响应
    Statistics数据统计面板,性能分析 重点:主要关注RTT,体现一个请求从发送到返回响应的时间反映一个请求的性能指标,其中主要需要关注RTT会展示全世界范围的请求平均数据showchart按钮,从饼状图中分别出哪些资源的请求耗时最多,从而对页面的访问进行访问速度优化Inspectors查......
  • Linux下使用命令查看服务器的连接数
    使用命令查看服务器的连接数,可用于判断服务器是否有CC攻击;netstat-nat|grep-i"80"|wc-l#统计80端口连接数(可以判断是否被CC)netstat-ntu|awk'{print$5}'|cut-d:-f1|sort|uniq-c|sort-n#统计是哪些IP连的(可以用来屏蔽CC攻击的ip)netstat-ntu|a......
  • Navicat Premium密码查看,密码解密
    在navicat右上角点击文件,点击导出链接,导出ncx文件,在文件找到password的加密字符 将以下代码复制到https://www.runoob.com/try/runcode.php?filename=HelloWorld&type=java中,执行后,即可解密。importjavax.crypto.Cipher;importjavax.crypto.spec.IvParameterSpec;import......
  • 别想宰我,怎么查看云厂商是否超卖?详解 cpu steal time
    据说有些云厂商会超卖,宿主有96个核心,结果卖出去100多个vCPU,如果这些虚机负载都不高,大家相安无事,如果这些虚机同时运行一些高负载的任务,相互之间就会抢占CPU,对应用程序有较大影响,我应该如何查看我的CPU是否被抢占了呢?什么是cpustealtime?如果你在物理机上查看这个......