- 论坛徽章:
- 0
|
10可用积分
debian mysql5.0
create table parent( id int not null primary key ) engine = innodb;
create table child(
id int ,
parent_id int,
index par_id (parent_id),
foreign key (parent_id) references parent(id)
) engine=innodb;
这个是手册上的例子,没有问题,通过
DROP TABLE IF EXISTS `myweb_kind`;
CREATE TABLE IF NOT EXISTS `myweb_kind` (
`id` tinyint(4) unsigned NOT NULL auto_increment PRIMARY KEY,
`kind` char(20) NOT NULL
) ENGINE=INNODB DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
-- 内容的子类
DROP TABLE IF EXISTS `myweb_category`;
CREATE TABLE IF NOT EXISTS `myweb_category` (
`id` tinyint(4) unsigned NOT NULL auto_increment PRIMARY KEY,
`category` char(20) NOT NULL,
`kind_id` tinyint(4) NOT NULL,
INDEX (`kind_id`),
FOREIGN KEY (`kind_id`) REFERENCES myweb_kind(id)
) ENGINE=INNODB DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
can't create table './myweb/myweb_category.dfm
这是我的例子,错误信息如上
一样的用户,一样的语法(exist之类的去掉也是一样问题)
我又用了django的orm试了一下,
django把这项工作分为三步
两个create,最后再alter category
我用sqlall 把语句打出来,然后自己在控制台里输入,还是报错,郁闷坏了 |
最佳答案
查看完整内容
建立外键的前提: 本表的列必须与外键类型相同(外键必须是外表主键)。外键作用: 使两张表形成关联,外键只能引用外表中的列的值!指定主键关键字: foreign key(列名)引用外键关键字: references (外键列名)事件触发限制: on delete和on update , 可设参数cascade(跟随外键改动), restrict(限制外表中的外键改动),set Null(设空值),set Default(设默认值),[默认]no action例如:outTable表 主键 id 类型 int创建含有外键的表 ...
|