当前位置: 电脑软硬件应用网 > 设计学院 > 网络编程 > 数据库 > 正文 |
|
||||
详细讲解mysql外链的含义和命令 | ||||
2010-3-8 9:09:30 文/网络收集 出处:电脑软硬件应用网 | ||||
通常说到外键,只会提到“外键的目的是确定资料的参考完整性(referential integrity)。”,但是外键具体包含哪些动作和含义呢? 1、设置外链: (1)、通过create table创建外键: 看2行代码,是建表中的命令:
注:ON update cascade ON Delete cascade级联更新和级联删除。 通常在设置外链时,都会先设置外链字段的索引,如上:key idx_fk_country_id (country_id),但这不是非必需的,上面代码中:
这些是可以省去的,直接从FOREIGN KEY开始。当然,如果要给外链命名,则constraint 是必需要的, 如果没有key idx_fk_country_id (country_id),这行时,在设置外链后,mysql会自动加上key索引(即标准index索引).可以在建完表后用show create table city;来查看。 ALTER TABLE city ADD INDEX idx_city(countryid); ALTER TABLE city ADD CONSTRAINT fk_city_country FOREIGN KEY (countryid) REFERENCES country(country_id) ON DELETE CASCADE; ALTER TABLE tbname DROP FOREIGN KEY fk_fkname; 3、外链的具体动作: 注意,on DELETE restrict和on DELETE cascade不能同时定义 默认动作1: 当增加子表中外键值时,如果父表主键不存在该值时,则禁止插入。 默认动作2: 当主表删除某记录时,如果子表有对应该录的内容时,禁止删除 因此,上面的可以on DELETE restrict略去。 非默认动作——级联更新: 当父表更新主键时,如果子表有对应记录,则自动更新子表,这一动作用ON update cascade来实现。 非默认动作——级联删除: 当父表更新主键时,如果子表有对应记录,则自动更新子表,这一动作用ON Delete cascade来实现。 a、set null : 表示父表在更新或删除时,子表对应的字段被set null. b、no action : 和restrict相同,限制在子表有关联记录的情况下父表不能更新。 5、临时关闭外键检查: 常用于: A、导入多个表数据时,需要忽略之前表的导入顺序, B、执行LOAD DATA和ALTER TABLE操作时。 命令: set foreign_key_checks=0 完成之后,重新开启外键检查用set foreign_key_checks=1;来恢复 |
||||
最新热点 | 最新推荐 | 相关文章 | ||
MySQL转换Oracle的七大注意事项 Mysql表别名的用法 如何彻底删除MYSQL? MySQL 操作日志查看的实际操作步骤与… 详解MySQL处理NULL值的方法提高性能 详解linux下纯手动安装MySQL源码的步… Mysql数据库名和表名在不同系统下的… mysql全文搜索:sql的写法 MySQL易学易用:MYSQL不为人知的特性 MYSQL远程连接速度慢的解决方法 |
关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 | |
Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号 |