mysql 如何保证数据完整性 -- 笔记

来源:互联网 发布:java 列出n之前的质数 编辑:程序博客网 时间:2024/05/01 17:40
mysql 约束和索引 
相同点: 保证证数据的完整性
区别: 索引是从数据结构的角度来保证数据完整性, 而 约束是一个逻辑概念,用来保证数据完整性.

保证数据完整性的方法:

一. 对错误数据的约束
   设置sql_mode 为 严格模式, 来提示报错而不是警告
    服务器配置: my.cnf sql_mode ='STRICT_TRANS_TABLES' ; 
    客户端 使用 : set   sql_mode = 'STRICT_TRANS_TABLES' ;
    比如在非严格模式下, 对字段已设置为not null  , 插入了 非法日期的值: 比如 2009-02-30.

二. ENUM 和 SET 约束(针对数据类型).
    比如假设 性别 只允许两种, male, female.  enum('male', 'female'), 也可以 enum(0, 1). 如果设置为 tinyint(1), 值就可以存在 0-9.
     
三. 触发器约束
    通过创建触发器来过滤错误的数据.一般用在字读间的计算.
      
四.外键
     InnoDB支持外键, 可以通过外键来保证数据的完整性. 比如 一个用户表, 对应有张子表来存储一些额外的信息,
子表通过外键就可以达到只要主表有 delete 和 update 的操作,对于的数据也会 delete 和 update.
MyISAM 表不支持外键,可以只用 触发器来控制数据完整性.

    
原创粉丝点击