mysql 外键的记载
2015-08-22 09:56
585 查看
mysql> show create table tb_dept1; +----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | tb_dept1 | CREATE TABLE `tb_dept1` ( `id` int(11) NOT NULL, `name` varchar(22) CHARACTER SET latin1 NOT NULL, `location` varchar(50) CHARACTER SET latin1 DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 | +----------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> create table tb_emp5 -> ( -> id int(11) primary key, -> name varchar(25), -> deptId int(11), -> salary float, -> constraint fk_emp_dept1 foreign key (deptId) references tb_dept1(id) -> ) ENGINE=InnoDB Default charset=utf8; Query OK, 0 rows affected (0.03 sec) mysql> desc tb_dept1; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(11) | NO | PRI | NULL | | | name | varchar(22) | NO | | NULL | | | location | varchar(50) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> insert into tb_dept1 values('1','技术部','xxxxxxxx'); Query OK, 1 row affected (0.01 sec) mysql> insert into tb_emp5 values('1','xx','2','3300'); ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`lisheng`.`tb_emp5`, CONSTRAINT `fk_emp_dept1` FOREIGN KEY (`deptId`) REFERENCES `tb_dept1` (`id`)) mysql> insert into tb_emp5 values('1','xx','1','3300'); Query OK, 1 row affected (0.02 sec) mysql> select * from tb_emp5; +----+--------+--------+--------+ | id | name | deptId | salary | +----+--------+--------+--------+ | 1 | xx | 1 | 3300 | +----+--------+--------+--------+ 1 row in set (0.00 sec) mysql> select * from tb_dept1; +----+-----------+--------------------+ | id | name | location | +----+-----------+--------------------+ | 1 | 技术部 | xxxxxxxxxx | +----+-----------+--------------------+ 1 row in set (0.00 sec)
说明一下,mysql默认是不支持外键约束的,也就是mysql默认的myisam 存储类型是不支持外键约束的,如果要支持就要用innodb类型,两个表多要是innodb类型的,否则是会报错的。
相关文章推荐
- Mysql 5.1升级为mysql 5.6遇到的问题及解决方式
- Mysql 5.1升级为mysql 5.6遇到的问题及解决方式
- MySql中用一张表的数据更新另一张表的部分数据
- mysql主从复制
- mysql 常用命令集锦
- 如何查看mysql数据库版本号
- 修改mysql 数据库root密码的方法
- mysql视图
- mysql视图
- MySQL重置root密码的方法
- MySQL安装图解_学习笔记
- Mysql 分页语句Limit用法
- 创建mysql数据库并指定编码
- 删除数据库mysql
- C# Entity Framework MySql CodeFirst
- hibernate *.hbm.xml 与 hibernate.cfg.xml基本模板(mysql)
- MySql in子句 效率低下优化
- PostgreSQL与MySQL常用命令比较[转]
- Mysql的主从同步设置
- mysql性能优化