有哪些网站是可以接单做任务的,山东省优质校建设网站,长沙搜索排名优化公司,郑州官网网站推广优化公司文章目录 代码插入时#xff0c;自动加密更新时#xff0c;自动加密查看触发器数据操作示例update数据取出解密取 注意一次尝试#xff0c;看加密后数据长度 参考链接#xff1a; 一篇非常好的讲解触发器的文章#xff1a;示例、原理MySQL/MariaDB触发器。 用触发器自动加… 文章目录 代码插入时自动加密更新时自动加密查看触发器数据操作示例update数据取出解密取 注意一次尝试看加密后数据长度 参考链接 一篇非常好的讲解触发器的文章示例、原理MySQL/MariaDB触发器。 用触发器自动加密的应用文章mysql触发器-插入更新数据时字段值自动加密。 delimiter的作用可以参考这里。
代码
插入时自动加密
-- 删除原先的触发器
DROP TRIGGER IF EXISTS 【触发器名如t_insert_tbStu_oValue】;
-- 创建触发器
DELIMITER $$
CREATE TRIGGER 【触发器名如t_insert_tbStu_oValue】
BEFORE INSERT ON 【表名】FOR EACH ROW -- 触发在这张表新增数据前
BEGIN -- 要执行的sql list 开始IF new.【列名】 IS NOT NULL THENSET new.【列名】 to_base64(aes_encrypt(new.【列名】,【你的密码】));END IF;
END;
END; $$
DELIMITER ;在MySQL/MariaDB中 new 表: 表示向表中插入新记录之前新记录保存在new表中即inserted表。 对应的old表表示删除目标记录之后将删除的记录保存在old表中即deleted表。 而update操作基本可以认为是先delete再insert的行为所以也会触发这两张表。 sql中可以引用这两张表中的列例如引用old.col_name。 另外 DELIMITER 默认是;但是可以指定成其他的例如由$$字代替这样在指定时DELIMITER $$和再次出现表示语句结束的$$之间就可以出现;不作为分隔符但是可以作为嵌套的语句的结束,并且作为整体的一部分来执行。 更新时自动加密
使用update语句时插入的值会是加密后的数据。
DROP TRIGGER IF EXISTS 【触发器名如t_update_tbStu_oValue】;
DELIMITER $$
CREATE TRIGGER 【触发器名如t_update_tbStu_oValue】 -- 创建触发器
BEFORE UPDATE ON 【表名】 FOR EACH ROW
BEGIN -- 要执行的sql list 开始IF new.【列名】IS NOT NULL THENSET new.【列名】 TO_BASE64 (AES_ENCRYPT (new.【列名】,【你的密码】));END IF;
END;$$
DELIMITER ;查看触发器
SHOW TRIGGERS;数据操作示例
update数据
USE 【数据库名】;
SHOW TRIGGERS;
SELECT * FROM 【表名】LIMIT 10;
update 【表名】 SET oValue 2 WHERE oName 【筛选条件】;
SELECT * FROM 【表名】 LIMIT 10;取出
直接取
SELECT oValue FROM 【表名】WHERE oName 【筛选条件】;解密取
SELECT AES_DECRYPT(FROM_BASE64(oValue), 【你的密码】) FROM (SELECT oValueFROM 【表名】WHERE oName 【筛选条件】) as oValue;注意
一次尝试看加密后数据长度
-- 判断数据长度
-- 源数据 120位
SELECT TO_BASE64(AES_ENCRYPT(yML93Cb2ZYnwrRUSyc5ETicNwfbpVRKe03XGlSXHOKvA3lMWnHCof8wFnsaYwVWMvBl6YssUbQt/MngjFUbSW709eFr1nsOcSSZy9wn61nDvZN5qm1mypDN,【我的密码】));-- 结果 172位
oGxxBBxQVjN2CoVxiZ08dX3BLb9xCEFwQqEk4eZJjwVtuGHKYjyfsyfBp66euJMwts8Fzv0rnQSisrdCopKS1HSx5YUmRUsEsZubPp7BepIqjwVEtU9uCCJXetFlhIcjyaptclGVZx4gici4B6jPsKP2DB3C1nYq9FsJBS1Ts