mysql级联

taksunm 2009-04-18 05:24:25
mysql> desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| sid | int(11) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| tid | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> desc teacher;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| tid | int(11) | YES | | NULL | |
| tname | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
mysql> alter table student add foreign key (tid) references teacher(tid) on delete cascade;
ERROR 1005 (HY000): Can't create table '.\minshi\#sql-6f8_2.frm' (errno: 150)
是哪里错了?
...全文
87 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sou2012 2009-04-19
  • 打赏
  • 举报
回复
检查下
possibleonline 2009-04-18
  • 打赏
  • 举报
回复
参考下,不会错的
ALTER TABLE `order_`
ADD CONSTRAINT `FK_u_o` FOREIGN KEY (`uid`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
winit 2009-04-18
  • 打赏
  • 举报
回复
因为tid不是key,我在mysqlmanul上看了,下面的可以
CREATE TABLE parent (id INT NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB;
CREATE TABLE child (id INT, parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id) REFERENCES parent(id)
ON DELETE CASCADE
) ENGINE=INNODB;
但是把 PRIMARY KEY (id) 删除之后就报错,和你的类似

81,114

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧