假如我建立了表 A 和 表 B 如下: CREATE TABLE A (
id Long NOT NULL;
...
);
CREATE TABLE B (
……
CONSTRAINT B_A foreign key(id) references A(id)
); 也就是说, 表 B 引用了 表A 的主键 id。 这里没有添加级联删除关系。 我想请问, 如何修改表 B, 使之与表 A 建立级联删除的关系 ?
即, 应有: CONSTRAINT B_A foreign key(id) references A(id) on delete casade 的效果?
请教各位大虾……在线等……
问题是, 我最开始因为某种原因没有写 on delete casade (好像就是默认的 restrict) 现在想添上这几个单词, 试了一下方法都报错。 mysql> alter table messages drop foreign key user_id;
ERROR 1025 (HY000): Error on rename of '.\messagepanel\messages' to '.\messagepa
nel\#sql2-134-12e' (errno: 152) mysql> alter table messages drop constraint message_user foreign key(user_id)
-> references users(user_id);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'const
raint message_user foreign key(user_id)
references users(user_id)' at line 1
这里 messages 即对应上面的表B
user_id int(11) NOT NULL auto_increment,
user_name varchar(20) default NULL,
password varchar(20) default NULL,
PRIMARY KEY (user_id)
);
CREATE TABLE messages (
message_id int(11) NOT NULL auto_increment,
title varchar(30) default NULL,
content varchar(100) default NULL,
date varchar(30) default NULL,
user_id int(11) NOT NULL,
PRIMARY KEY (message_id),
KEY user_id (user_id),
CONSTRAINT message_user FOREIGN KEY (user_id) REFERENCES users(user_id));
+----------+--------------------------------------------------------------------
| Table | Create Table
+----------+--------------------------------------------------------------------
| messages | CREATE TABLE `messages` (
`message_id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(30) DEFAULT NULL,
`content` varchar(100) DEFAULT NULL,
`date` varchar(30) DEFAULT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`message_id`),
KEY `user_id` (`user_id`),
CONSTRAINT `message_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id
`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+----------+--------------------------------------------------------------------
1 row in set (0.00 sec)mysql> alter TABLE `messages` DROP FOREIGN KEY message_user;
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0mysql> show create table messages;
+----------+--------------------------------------------------------------------
| Table | Create Table
+----------+--------------------------------------------------------------------
| messages | CREATE TABLE `messages` (
`message_id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(30) DEFAULT NULL,
`content` varchar(100) DEFAULT NULL,
`date` varchar(30) DEFAULT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`message_id`),
KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+----------+--------------------------------------------------------------------
1 row in set (0.00 sec)mysql>
on delete cascade;你说哪里有问题? cascade 写错了! 写成了 casade ! 这几天 , 已经有三次因为 少写了一个字母而忙活老半天!不知道该怎么说好! 另外两次是 JS 里面犯的错误。