MySQL数据库安全之防止撰改的方法

 更新时间:2014年07月05日 17:09:19   投稿:shichen2014  
这篇文章主要介绍了MySQL数据库防止撰改的方法,需要的朋友可以参考下

MySQL数据库可以通过触发器,使之无法修改某些字段的数据,同时又不会影响修改其他字段。

DROP TRIGGER IF EXISTS `members`;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='';
DELIMITER //
CREATE TRIGGER `members` BEFORE UPDATE ON `members` FOR EACH ROW BEGIN
 set new.name  = old.name;
 set new.cellphone = old.cellphone;
 set new.email  = old.email;
  set new.password = old.password;
END//
DELIMITER ;
SET SQL_MODE=@OLD_SQL_MODE;

再举一个例子:

CREATE TABLE `account` (
 `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
 `user` VARCHAR(50) NOT NULL DEFAULT '0',
 `cash` FLOAT NOT NULL DEFAULT '0',
 PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

每一次数据变化新增一条数据

INSERT INTO `test`.`account` (`user`, `cash`) VALUES ('neo', -10);
INSERT INTO `test`.`account` (`user`, `cash`) VALUES ('neo', -5);
INSERT INTO `test`.`account` (`user`, `cash`) VALUES ('neo', 30);
INSERT INTO `test`.`account` (`user`, `cash`) VALUES ('neo', -20);

保护用户的余额不被修改

DROP TRIGGER IF EXISTS `account`;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='';
DELIMITER //
CREATE TRIGGER `account` BEFORE UPDATE ON `account` FOR EACH ROW BEGIN
 set new.cash  = old.cash;
END//
DELIMITER ;
SET SQL_MODE=@OLD_SQL_MODE;

相关文章

  • mysql的登陆和退出命令格式

    mysql的登陆和退出命令格式

    这篇文章主要介绍了mysql的登陆和退出命令格式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Mysql设置主键自动增长起始值的方案总结

    Mysql设置主键自动增长起始值的方案总结

    在MySQL 中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值,下面这篇文章主要给大家介绍了关于Mysql设置主键自动增长起始值的相关资料,需要的朋友可以参考下
    2022-09-09
  • mysql中profile的使用方法教程

    mysql中profile的使用方法教程

    这篇文章主要给大家介绍了关于mysql中profile的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • MySQL数据库分库分表的方案

    MySQL数据库分库分表的方案

    随着项目不断迭代,使用人数的不断增加,数据库中某些表数据正在逐步膨胀,往单表千万迅速靠拢,,所以最近也在考虑做一下分库分表,本文就给大家详细讲解了什么分库分表和分库分表的方案,需要的朋友可以参考下
    2023-11-11
  • 解析MySQL数据库性能优化的六大技巧

    解析MySQL数据库性能优化的六大技巧

    本篇文章是对MySQL数据库性能优化的六大技巧进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 如何解决docker无法启动的问题

    如何解决docker无法启动的问题

    这篇文章主要介绍了如何解决docker无法启动的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Mysql忘记密码怎么重置密码的几种实现方法

    Mysql忘记密码怎么重置密码的几种实现方法

    本文主要介绍了Mysql忘记密码怎么重置密码的几种实现方法,每种方法都有其适用的情况,根据具体情况选择合适的方法,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • 与MSSQL对比学习MYSQL的心得(六)--函数

    与MSSQL对比学习MYSQL的心得(六)--函数

    这一节主要介绍MYSQL里的函数,MYSQL里的函数很多,我这里主要介绍MYSQL里有而SQLSERVER没有的函数
    2014-08-08
  • windows mysql 自动备份的几种方法汇总

    windows mysql 自动备份的几种方法汇总

    本篇文章主要对windows mysql 自动备份的几种方法进行整理,具有很好的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • mysql中You can’t specify target table for update in FROM clause错误解决方法

    mysql中You can’t specify target table for update in FROM clau

    这篇文章主要介绍了mysql中You can’t specify target table for update in FROM clause错误解决方法,需要的朋友可以参考下
    2015-02-02

最新评论