日期:2014-05-16  浏览次数:20617 次

mysql外键的使用和引用完整性

  • 外键和引用的完整性

利用外键关系可以在某个数据表声明与另外一个数据表的某个索引相关联的索引,同时还可以将约束条件施加到外键关系中。
外键可以帮助维护数据的一致性,如果不使用外键就需要我们自己来维护不同数据表之间的一致性。
Mysql中,InnoDB存储引擎提供了对外键的支持
父表:包含原始键值的数据表
子表:引用父表中键值的数据表

  • 外键的创建和使用

CREATE TABLE `test_user_info` (
  `id` int(8) NOT NULL AUTO_INCREMENT,
  `user_id` int(8) NOT NULL,
  `address` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `user_id` (`user_id`),
  CONSTRAINT `user_id` FOREIGN KEY (`user_id`) REFERENCES `test_user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

CONSTRAINT用于给外键关系起一个名字,如果没有mysql会默认创建一个名字
FOREIGN KEY列出子表里面被索引的数据列,必须匹配附表中的索引值
REFERENCES子句列出父表中索引数据列的名字,子表中的外键将根据该子句索引父表中的数据列
ON DELETE用于指定当父表中的数据被删除时子表应该做什么
ON UPDATE用于指定当父表中的数据被更新时子表应该做什么