mysql 外键的记载

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类型的,否则是会报错的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值