MariaDB,中如何在触发器下动态执行拼接语
需求如下:
需要记录一张表中修改了那些字段记录修改前的值和修改后的值!
需要记录一张表中修改了那些字段记录修改前的值和修改后的值!
#基础表
create table demo
(
col_one varchar(50),
col_two varchar(50)
)
#触发器记录
create table trigger_demo
(
old_col varchar(50),
new_col varchar(50)
)
# 修改
Delimiter $$
Drop Trigger If Exists trigger_insert; $$
Create Trigger trigger_insert
before update on demo for each row
begin
-- 需要定义接收游标数据的变量
declare colVal CHAR(16);
-- 遍历数据结束标志
declare done int default false;
-- 游标
declare cur cursor for select column_name from information_schema.columns
where table_schema='smartevent' and table_name='demo';
-- 将结束标志绑定到游标
declare continue handler for not found set done=true;
-- 打开游标
open cur;
-- 开始循环
read_loop: loop
-- 提取游标里的数据,这里只有一个,多个的话也一样;
fetch cur into colVal;
-- 声明结束的时候
if done then
leave read_loop;
end if;
-- 这里做你想做的循环的事件
--这里如何实现动态加载修改前,修改后值不一致的列名,插入到TRIGGER_DEMO表
/*set @ss1=concat('new','.',colVal);
set @ss2=concat('old','.',colVal);
set @ss='insert into TRIGGER_DEMO(NEW_COL,OLD_COL)
values('+@ss1+','+@ss2+');';
PREPARE s1 FROM @ss;
execute s1;*/
end loop;
-- 关闭游标
close cur;
end; $$
...全文
相关推荐
Navicat for MariaDB+MariaDB驱动jar包
**数据预览**:提供SQL预览和执行功能,帮助用户调试和优化SQL语句。7. **触发器和存储过程**:创建、修改和管理数据库的触发器和存储过程。8.
MariaDB中文文档
MariaDB支持事务处理、存储过程、触发器和视图等功能。书中提到了MariaDB的存储引擎的变化,其中包括xtradb的废弃和innodb的引入。
centos 7下安装mysql(MariaDB)的教程
在MariaDB安装完成后,你可以开始创建数据库、用户,进行数据操作和管理。MariaDB提供了与MySQL类似的功能,包括SQL查询、存储过程、触发器等。
Practical PHP 7, MySQL 8, and MariaDB Website Databases
MariaDB致力于兼容MySQL,并在其基础上增加了更多高级功能,例如动态分区、实时压缩等。MariaDB还提供了更好的性能和安全性,是构建高可用性网站的理想选择之一。
MariaDB Crash Course (MySQL速成)
通过SQL,用户可以执行各种数据库操作,包括但不限于创建、查询、更新和删除数据库中的数据;创建、修改和删除数据库对象(例如表、索引和视图);以及设置访问权限等。


