在MySQL中使用外键
昨晚用Mysql建外键约束,始终没有成功,今天找到这个,原来只有InnoDB类型的表才可以使用外键.
只有InnoDB类型的表才可以使用外键
CREATE TABLE person (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
name CHAR(60) NOT NULL,
PRIMARY KEY (id)
)type=innoDB;
CREATE TABLE shirt (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
style ENUM('t-shirt', 'polo', 'dress') NOT NULL,
color ENUM('red', 'blue', 'orange', 'white', 'black') NOT NULL,
owner SMALLINT UNSIGNED NOT NULL,
FOREIGN KEY (owner) REFERENCES PERSON(id)
ON DELETE CASCADE
ON UPDATE CASCADE,
PRIMARY KEY (id)
)type=innoDB;
然后打开MySQL Administrator终于看到 FOREIGN KEY有东西了,尝试手工删除后再用MySQL Administrator建立,成功:)
INSERT INTO person VALUES (NULL, 'Antonio Paz');
SELECT @last := LAST_INSERT_ID();
INSERT INTO shirt VALUES
(NULL, 'polo', 'blue', @last),
(NULL, 'dress', 'white', @last),
(NULL, 't-shirt', 'blue', @last);
INSERT INTO person VALUES (NULL, 'Lilliana Angelovska');
SELECT @last := LAST_INSERT_ID();
INSERT INTO shirt VALUES
(NULL, 'dress', 'orange', @last),
(NULL, 'polo', 'red', @last),
(NULL, 'dress', 'blue', @last),
(NULL, 't-shirt', 'white', @last);
SELECT * FROM person;
SELECT * FROM shirt;
测试UPDATE关联
UPDATE PERSON SET id=3 WHERE id=1;
SELECT * FROM shirt;
测试DELETE关键
DELETE FROM PERSON WHERE id=3;
SELECT * FROM shirt;
看到有文章简单使用owner SMALLINT UNSIGNED NOT NULL REFERENCES person(id),进行连接,但这样的连接好像没任何意义,担看到“MySQL 3.23.7-alpha手册”有这样一句话“一些应用程序要求他们存在”或者“插入强制约束”、“级联删除”、“级联更新”这些特性是在MySQL甘个版本中才有吧
还有有文章说要建立INDEX (owner) 才可以,但我经测试并不需要,这可能是和MYSQL版本不同有关,我用的是MySQL4.1
PS.查看Mysql手册才知道从MySQL 4.1.2开始会自动建立这个INDEX (owner)
参考:
http://dev.mysql.com/doc/mysql/en/innodb-foreign-key-constraints.html
分享到:
相关推荐
帮助您学会增加外键,在建表的时候没有加外键在之后加的方法
在数据库MySQL中利用外键实现级联删除、更新等方面的内容。有兴趣可以看看。。
本文介绍了在MySQL数据库中定义外键的方法。
内包含外键约束模式,数据库的视图基本操作
MySQL 外键
知识点很简单,但是语句总忘,在这里写一个小例子,有助于大家记忆。mySql主外键关联例子
mysql里的 外键使用 详细讲解 mysql
MySQL命令行&MySql外键设置详解 .txt
MySQL外键详解MySQL外键详解MySQL外键详解MySQL外键详解MySQL外键详解
外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立; 3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以...
很多朋友们在做表设计时,处理添加外键时提示error 150 问题,都会遇到此文档中详细的记载了解决方案,希望可以帮到你!
MySql外键设置详解MySql外键设置详解MySql外键设置详解MySql外键设置详解MySql外键设置详解MySql外键设置详解MySql外键设置详解MySql外键设置详解MySql外键设置详解
外键表名>(外键列名) 事件触发限制: on delete和on update , 可设参数cascade(跟随外键改动), restrict(限制外表中的外键改动),set Null(设空值),set Default(设默认值),[默认]no action 例如: ...
主要介绍了详解MySQL中的外键约束问题,针对在MySQL中使用InnoDB表的情况,需要的朋友可以参考下
本文介绍在在MySQL数据库中定义数据表、设置索引、定义外键、级联等操作。
mysql外键的设置,使用。添加外键的格式: ALTER TABLE yourtablename ADD [CONSTRAINT 外键名] FOREIGN KEY [id] (index_col_name, ...) REFERENCES tbl_name (index_col_name, ...) [ON DELETE {CASCADE | ...
mysql外键的添加与删除参考.pdf
mysql数据库中外键的使用方法,这在数据库的设计中使用很频繁,很实用,适合初学者学习,当来的
附件包含的内容为MySQL数据库中关于外键的内容,包括外键定义,作用,添加和删除
删除表不是特别常用,特别是对于存在外键关联的表,删除更得小心。...这是因为你尝试删除的表中的字段被用作了其他表的外键,因此在删除这个表(父表)之前必须先删除具有外键的表(子表)。也就是说,