mysql innoDB 使用外键的问题
2008-01-02 17:42
671 查看
我建了两个表person和shirt
其中shirt有一个owner字段是外键,引用的是person的主键id
表示shirt的所有者是person中的一个row
于是有如下操作:
两个表:
person
+-------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------------------+------+-----+---------+----------------+
| id | smallint(5) unsigned | | PRI | NULL | auto_increment |
| name | char(60) | | | | |
+-------+----------------------+------+-----+---------+----------------+
shirt
+-------+--------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra
|
+-------+--------------------------------+------+-----+---------+----------------+
| id | smallint(5) unsigned | | PRI | NULL | auto_increment |
| style | enum('t-shirt','polo','dress') | | | t-shirt | |
| owner | smallint(5) unsigned | | | 0 |
|
+-------+--------------------------------+------+-----+---------+----------------+
增加外键
ALTER TABLE `sample`.`shirt` ADD CONSTRAINT `owner` FOREIGN KEY `owner` (`id`)
REFERENCES `person` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE
, COMMENT = '';
增加索引
alter table shirt add index(owner);
以上语句执行都成功,但是插入数据不成功,语句如下:
insert into shirt values(null,'polo',3);
可是person表的id值有3这个值,如下:
mysql> select * from person;
+----+-------+
| id | name |
+----+-------+
| 2 | zhang |
| 3 | liu |
+----+-------+
2 rows in set (0.00 sec)
其中shirt有一个owner字段是外键,引用的是person的主键id
表示shirt的所有者是person中的一个row
于是有如下操作:
两个表:
person
+-------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------------------+------+-----+---------+----------------+
| id | smallint(5) unsigned | | PRI | NULL | auto_increment |
| name | char(60) | | | | |
+-------+----------------------+------+-----+---------+----------------+
shirt
+-------+--------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra
|
+-------+--------------------------------+------+-----+---------+----------------+
| id | smallint(5) unsigned | | PRI | NULL | auto_increment |
| style | enum('t-shirt','polo','dress') | | | t-shirt | |
| owner | smallint(5) unsigned | | | 0 |
|
+-------+--------------------------------+------+-----+---------+----------------+
增加外键
ALTER TABLE `sample`.`shirt` ADD CONSTRAINT `owner` FOREIGN KEY `owner` (`id`)
REFERENCES `person` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE
, COMMENT = '';
增加索引
alter table shirt add index(owner);
以上语句执行都成功,但是插入数据不成功,语句如下:
insert into shirt values(null,'polo',3);
可是person表的id值有3这个值,如下:
mysql> select * from person;
+----+-------+
| id | name |
+----+-------+
| 2 | zhang |
| 3 | liu |
+----+-------+
2 rows in set (0.00 sec)
相关文章推荐
- 关于Mysql 外键使用的问题 推荐
- 使用innodb_force_recovery解决MySQL崩溃无法重启问题
- 使用innodb_force_recovery解决MySQL崩溃无法重启问题
- 关于linux下使用phpmyadmin给mysql表关联外键的问题和解决办法
- hibernate使用MySQLInnoDBDialect不能自动建表的问题
- 关于Mysql 外键使用的问题
- mysql中使用外键的1005问题及mysql 客户端工具navicat
- 使用innodb_force_recovery解决MySQL崩溃无法重启问题
- MySQL里使用Innodb引擎自增主键不连续的问题
- phpstudy2016最新版本mysql无法使用innodb的问题解决
- 关于linux下使用phpmyadmin给mysql表关联外键的问题和解决办法
- MySQL 外键使用
- 腾讯云CentOS7.0使用yum安装mysql及使用遇到的问题
- 使用tomcat产生的java.lang.ClassNotFoundException: com.mysql.jdbc.Driver问题
- MYSQL外键(Foreign Key)的使用(转)
- 腾讯云CentOS7.0使用yum安装mysql及使用遇到的问题
- mysql外键的优缺点和使用
- 排查mysql innodb Lock wait timeout exceeded; try restarting transaction的问题
- 使用阿里云云服务器Ubuntu14.0.4系统安装mysql修改默认编码导致mysqld.sock消失的问题
- 刚使用MYSQL的问题