USE test; CREATE TABLE student( id PRIMARY KEY AUTO_INCREMENT, NAME CHAR(10), age INT ); CREATE TABLE student_log( id INT PRIMARY KEY AUTO_INCREMENT, content VARCHAR(20) ); -- 1.创建添加触发器: CREATE TRIGGER tri_studentAdd AFTER INSERT ON student FOR EACH ROW INSERT INTO student_log(content) VALUES('学生被插入了一条数据'); -- 删除触发器: -- drop trigger tri_studentAdd; -- 2.创建修改触发器 CREATE TRIGGER tri_studentUpd AFTER UPDATE ON student FOR EACH ROW INSERT INTO student_log(content) VALUES('学生被修改了一条数据'); -- drop trigger tri_studentUpd; -- 3.创建删除触发器 CREATE TRIGGER tri_studentDel AFTER DELETE ON student FOR EACH ROW INSERT INTO student_log(content) VALUES('学生被删除了一条数据'); -- drop trigger tri_studentDel; INSERT INTO student(NAME, age) VALUES ('aaa', 18), ('bbb', 19), ('ccc', 20); -- 因为以上插入了三次所以,往student_log表中插入3条数据。 UPDATE student SET age = 22 WHERE NAME='aaa'; -- 日志生效 DELETE FROM student WHERE student.`id` = 2; -- 日志生效 -- 五、mysql的权限问题 -- root用户:超级管理员 增删改查(数据库、表、数据) -- 给mysql数据库分配不同权限的不同用户 -- 注意:最好不要安装压缩版的mysql,其中没有mysql数据库 -- 意味着不能修改增删,用户和权限 -- mysql数据库:存放mysql的配置信息包括用户信息 USE mysql; -- 用户表 SELECT * FROM USER; -- 在查询出mysql表的时候,发现一个很奇怪的现象 -- user其中的password并不是一串真实密码 -- 而是一串加密的无序字符串,且长度很长 -- 得知: -- 存入在数据库中的密码,都是通过单向加密的 -- 只能加密,不能解密(或解密得到的结果很多,不能唯一确定) -- 加密有两种方法:1.通过mysql insert的时候进行加密 -- 2.通过在java里面get到的时候进行加密。 -- 由此推论出,密码是不可能提供找回功能的,只能提供重置功能。 -- mysql中提供的是加密函数进行加密 -- select password('root'); 加密函数(MD5算法--单向加密) -- 加密成32位的字符串 -- 修改用户密码:先加密了之后,再放进去 UPDATE USER SET PASSWORD=PASSWORD('123456') WHERE USER='root'; -- 分配权限给不同的用户 -- 用户不存在时,自动创建用户(即是分配权限也是创建用户,存在时增加权限,不存在时创建用户分配权限) -- 需求:分配查询test中的student的权限的给mzy用户,密码为:'123456'; -- 分配查询权限 用户名 登录位置 GRANT SELECT ON test.`student` TO 'mzy'@'localhost' IDENTIFIED BY '123456'; -- 分配删除权限:在查询上追加权限 GRANT DELETE ON test.`student` TO 'mzy'@'localhost' IDENTIFIED BY '123456'; -- 删除的话,直接delete就行了 SHOW TABLES;
mysql触发器学习
猜你喜欢
转载自blog.csdn.net/qq_36791569/article/details/80166931
今日推荐
周排行