iis服务器助手广告
返回顶部
首页 > 资讯 > 数据库 >在plsql字符串拼接,批量生成trigger
  • 206
分享到

在plsql字符串拼接,批量生成trigger

在plsql字符串拼接,批量生成trigger 2017-04-22 03:04:57 206人浏览 猪猪侠
摘要

本次需要批量编写监控全数据库表的trigger,记录下变更的字段名和变更的值、表名、相对应的主键和做的操作(增删改)。在自动生成脚本sql后,执行execute immediate sql_str --date:2021-11-05 通

在plsql字符串拼接,批量生成trigger

本次需要批量编写监控全数据库表的trigger,记录下变更的字段名和变更的值、表名、相对应的主键和做的操作(增删改)。在自动生成脚本sql后,执行execute

immediate sql_str --date:2021-11-05
  1. 通过 || 拼接字符串
  2. 通过user_cons_columns , user_constraints 来获取表的主键。以CONSTRAINT_TYPE 选定主键类型,以TABLE_NAME绑定表名,从而获取表的主键名,为后续拼接获取表主键和主键值做准备。最后,将该表所有主键名存放于var_array (防止组合主键),后续能够遍历取出
  3. 通过表user_tab_columns 获取表所有字段,后续拼接查看值的更新。
  4. 通过new.column <> old.column 来判断前后值是否变更,如若变更,记录下变更的值。
  5. if deleting,inserting,updating来判断执行的操作。
  6. 最后,生成的trigger将向我们新建的存储表插入执行的操作,变更的列名,变更的值以及主键,以便于我们检索。
  7. 同理,可生成批量启动和关闭trigger的脚本。

(1)首先获取数据库中所有表的表名

for tables_name in (
select table_name
from user_tables
) loop

(2)根据约束表,获取各表的主键--需求需要

for primary_key in (
select cu.COLUMN_NAME from user_cons_columns cu , user_constraints au
where cu.constraint_name = au.CONSTRAINT_NAME
and au.CONSTRAINT_TYPE = "P"
and au.TABLE_NAME= tables_name.table_name
)loop
i:=i+1;
var_array(i):=primary_key.column_name;
end loop;

(3)trigger在插入修改和删除前触发

-- the first set sql_str
sql_str := "create or replace trigger "||" task_for_link_"||tables_name.table_name||
" before insert or update or delete"||
" on "||tables_name.table_name||
" for each row"||
" declare "||
"jobName varchar2(200);"||
"tableName varchar2(200);"||
"columnName varchar2(200);"||
"str varchar2(2000);"||
"pk_infORMation varchar2(300);"||
" begin "||
"tableName := """||tables_name.table_name||""";";

for primary_key_count in 1..var_array.count loop
sql_str := sql_str||
"pk_information := """||var_array(primary_key_count)||"""||:new."||var_array(primary_key_count)||";";
end loop;
var_array.delete();
i:=0;
sql_str := sql_str||
"if updating then";

 

(4)拼接,判断字段是否有变更,如若有记录下来

-- get every column_name by table_name
for columns_name in (
select t.table_name,t.column_name
from user_tab_columns t
where t.TABLE_NAME = tables_name.table_name
) loop
-- the second set column to sql_str

sql_str := sql_str||
" if :new."||columns_name.column_name||" <> :old."||columns_name.column_name||" then"||
" str := str||"""||columns_name.column_name||""";"||
"end if;";
end loop;
-- the third set the whole sql_str
sql_str := sql_str||
" insert into t_task ( JOB_NAME, TABLE_NAME, COLUMN_NAME , pk_information)"||
" values ( ""update"", tableName, str, pk_information);"||
" end if;"||
" if inserting then"||
" insert into t_task ( JOB_NAME, TABLE_NAME, COLUMN_NAME, pk_information)"||
" values ( ""insert"", tableName, columnName, pk_information); "||
" end if;"||
" if deleting then"||
" insert into t_task ( JOB_NAME, TABLE_NAME, COLUMN_NAME, pk_information)"||
" values ( ""delete"", tableName, columnName, pk_information); "||
" end if;"||
"end task_for_link_"||table_name||";";

 

(5)执行脚本--when other then null(抛错继续执行)

begin
execute immediate sql_str;
exception
when others then null;
end;
dbms_output.put_line(sql_str);
end loop;
end;

 

您可能感兴趣的文档:

--结束END--

本文标题: 在plsql字符串拼接,批量生成trigger

本文链接: https://www.lsjlt.com/news/8871.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python3 拼接并批量生成sql
    #coding=utf-8 from openpyxl import load_workbook #读取excel的数据 def read_excel(): #打开一个workbook wb = load_workbook...
    99+
    2023-01-31
    批量 sql
  • plsql中如何批量替换字符串
    在PL/SQL中,可以使用REPLACE函数来批量替换字符串。REPLACE函数的语法如下: REPLACE(source_stri...
    99+
    2024-04-09
    plsql
  • 如何实现字符串拼接的批处理
    这篇文章主要为大家展示了“如何实现字符串拼接的批处理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何实现字符串拼接的批处理”这篇文章吧。代码如下:@echo off ::&...
    99+
    2023-06-08
  • 怎么在Shell中拼接字符串
    怎么在Shell中拼接字符串?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1. 字符串声明概述字符串的基本操作脚本 1# 声明字符串str01="str...
    99+
    2023-06-09
  • python列表元素怎么拼接成字符串
    这篇文章主要介绍了python列表元素怎么拼接成字符串的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python列表元素怎么拼接成字符串文章都会有所收获,下面我们一起来看看吧。一、使用join()方法连接列列表...
    99+
    2023-07-05
  • 在 Python 中生成随机字符串
    介绍生成随机字符串的几种方法: 1. 使用random.choice()实现 import stringimport randomnumber_of_strings = 5length_of_stri...
    99+
    2023-09-06
    python
  • mysql如何把数据的列拼接成字符串
    mysql中把数据的列合并成字符串的方法使用 group_concat 函数如test表的结果如下:name subject张三 语文张三 数学张三 英语将张三的subject列合并成一列显示:select name,GROUP_...
    99+
    2024-04-02
  • LinuxShell字符串变量拼接与赋值的使用
    目录1.字符串拼接2.定义值为双引号或单引号的字符串3.在单引号和双引号字符串中取变量值最近在工作用到shell脚本,用到了字符串变量的拼接,同时需要对字符串进行赋值,这里与大家分享...
    99+
    2023-05-19
    Shell字符串变量拼接 Shell字符串变量赋值
  • SQLSERVER 拼接含有变量字符串案例详解
    一、拼接字符串(整个字符串不分割)步骤: 首先在字符串的前后加单引号; 字符串中的变量以'''+@para+'''在字符串中表示; 若在执行时存在类型转换错...
    99+
    2024-04-02
  • 怎么在JavaScript中使用join拼接字符串
    本篇文章为大家展示了怎么在JavaScript中使用join拼接字符串,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。javascript是一种什么语言javascript是一种动态类型、弱类型的语言...
    99+
    2023-06-14
  • Linux Shell字符串变量拼接与赋值的使用
    目录1.字符串拼接2.定义值为双引号或单引号的字符串3.在单引号和双引号字符串中取变量值最近在工作用到shell脚本,用到了字符串变量的拼接,同时需要对字符串进行赋值,这里与大家分享一下, 1.字符串拼接 shell脚本...
    99+
    2023-05-06
    Shell字符串变量拼接 Shell字符串变量赋值
  • 怎么在Java8中使用StringJoiner类拼接字符串
    怎么在Java8中使用StringJoiner类拼接字符串?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。假设现在遍历一个字符串集合,需求是每个元素按照 “.” 分开。Str...
    99+
    2023-06-06
  • 怎么在MySql中使用逗号拼接字符串
    怎么在MySql中使用逗号拼接字符串?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。例如某字段里是为1,2,3,4,5 使用方法:...
    99+
    2024-04-02
  • 如何在 Golang 中生成随机字符串?
    在 golang 中可以通过使用 crypto/rand 包中的 randstringbytes 函数生成随机字符串。该函数接受两个参数,第一个参数指定要生成的随机字符串的长度,第二个参...
    99+
    2024-05-13
    golang 随机字符串
  • python列表元素拼接成字符串的4种方法
    目录前言一、使用join()方法连接列列表二、利用for循环连接列表三、对列表进行切片然后连接四、使用zip压缩多个列表为一个列表前言 我们在分析列表数据时,常常需要对列表数据进行输...
    99+
    2023-02-23
    python列表拼接成字符串 python列表拼接
  • 怎么在R语言中对字符串进行拼接
    这篇文章将为大家详细讲解有关怎么在R语言中对字符串进行拼接,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在R语言中 paste 是一个很有用的字符串处理函数,可以连接不同类型的变量及常量。函...
    99+
    2023-06-14
  • 如何在Python 中使用 join() 函数把列表拼接成一个字符串
    目录1.设置 end=’’2.拼接字符串(string)3.举例内容概要:如何把列表中的元素拼接为一个字符串呢?本文介绍了采用 join() 函数的解决方法。...
    99+
    2024-04-02
  • js拼接字符串时如何在中间加上空格
    目录js拼接字符串时在中间加上空格问题js字符串拼接空格拼不上解决:使用\xa0 (反斜杠xa零)拼接字符串的几个常用方法HTML提供的几种空格实体js拼接字符串时在中间加上空格 由...
    99+
    2024-04-02
  • 如何使用PHP操作符将两个字符串拼接在一起
    这篇文章主要介绍“如何使用PHP操作符将两个字符串拼接在一起”,在日常操作中,相信很多人在如何使用PHP操作符将两个字符串拼接在一起问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用PHP操作符将两个字符...
    99+
    2023-06-20
  • Linux下shell脚本字符串变量拼接与赋值的方法
    本篇内容介绍了“Linux下shell脚本字符串变量拼接与赋值的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.字符串拼接shell脚...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作