前几天我创建了一个有两个表的数据库:
通常,如果会员在帐户表中有余额,我就不能DELETE
任何会员。在它运作良好之前。
但今天我导入相同的脚本,我可以删除一个成员甚至会员在帐户表中有余额。
我不知道发生了什么?我不记得以前的服务器版本的mysql。现在我正在运行mysql 5.5.16
,MySQL客户端版本是mysqlnd 5.0.8-dev - 20102224 - Revision: 310735 in localhost
。
我的代码是
//account table
CREATE TABLE IF NOT EXISTS `account` (
`account_id` int(11) NOT NULL AUTO_INCREMENT,
`member_id` int(11) NOT NULL,
`dates` date NOT NULL,
`amount` float NOT NULL,
PRIMARY KEY (`account_id`),
KEY `FK_account_1` (`member_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
//member table
CREATE TABLE IF NOT EXISTS `member` (
`member_id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`account_num` int(11) NOT NULL,
PRIMARY KEY (`member_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=34 ;
//and this code
ALTER TABLE `account`
ADD CONSTRAINT `FK_account_1`
FOREIGN KEY (`member_id`)
REFERENCES `member`(`member_id`)
ON DELETE CASCADE
ON UPDATE CASCADE;
答案 0 :(得分:1)
我不确定我是否理解这一点但是:
您拥有的约束意味着每次删除成员时,该成员将与其在帐户表中的任何余额一起被删除。 (ON DELETE CASCADE
)
如果这不是您想要的行为,并且您希望mysql在删除具有余额的成员时引发异常;然后从约束定义中删除 ON DELETE CASCADE
行。
答案 1 :(得分:0)
ALTER TABLE account
ADD CONSTRAINT `fk_account_member`
FOREIGN KEY (`member_id`)
REFERENCES `member` (`member_id`)
ON DELETE CASCADE
ON UPDATE CASCADE;