网站制作学习网经验与学习→正文:mysql创建外键
字体:

mysql创建外键

经验与学习 2011/3/10 17:59:48  点击:不统计

原载于:原文章%77w%77%2Ef%6F%72%61%73%70%2E%63n

mysql设置外键,mysql设置外键可以通过语句设置,也可以通过界面化得软件设置。下面将通过这两种方式设置外键的方式说一下
首先说一下设置外键的作用:外键是为了保持数据的一致性,完整性。外键是引用外表的值(A表)来做本表(B表)的数据。
假设A表如下:
用户表 user
userid   int 自动增长 用户id
username varchar 用户名
假设B表如下:
留言表 message
mid int 自动增长
userid  int  用户id
title  varchar 用户发布留言名
注意:
(1)在mysql中设置外键是必须用InnoDb数据库引擎,本次举例是将message中的userid为外键。
(2)两表的对应列数据类型必须一样
(3)所有的键必须唯一
(4)外键总是关联唯一的字段
1.通过mysql的语句来设置外键。
如果同过创建语句来的话,则要在创建表的时候设置或者之后再执行
先看创建语句原文是网站制作学习网的FoAsP.cn
创建用户表user
CREATE TABLE `user` (
  `userid` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `username` varchar(11) NOT NULL COMMENT '用户名',
  `passwowrd` char(15) NOT NULL,
  PRIMARY KEY (`userid`),
  KEY `a` (`userid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=gbk;
创建信息表message
CREATE TABLE `message` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `userid` int(11) NOT NULL,
  `title` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `userid` (`userid`),
  CONSTRAINT `article_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `user` (`userid`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=gbk;
然后看通过mysql语句更改的
 假设已经创建好连个表,并且InnoDb表。并且没有任何关系。
 执行下面语句来设置mysql外键
alter table article
add constraint 外键名
 foreign key(userid)
references user(userid) ON DELETE CASCADE ON UPDATE NO ACTION;

在此注明一下下面的ON DELETE CASCADE ON UPDATE NO ACTION;
都是有以下时间:ON DELETE ON UPDATE ,动作有RESTRICT: 拒绝对父表的删除或更新操作.cascade从父表删除或更新且自动删除或更新子表中匹配的行.no action不做任何操作(默认),SETNULL设置为空。
下一篇文章,用界面化如阿健创建mysql外键。我们用navicate创建外键


·上一篇:mysql启动占用大量内存 >>    ·下一篇:navicat创建mysql外键 >>
推荐文章
最新文章