我先解释一下表结构:
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| firstname | varchar(255) | NO | | NULL | |
| name | varchar(255) | NO | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
id 字段是通过外键从另一个表中引用的。
假设我的模型中有这样的函数:
public function delete_user($id) {
return $this->db->delete('users', array('id' => $id));
}
当从另一个表中引用此用户时,它应该会引发错误。“坏”的事情是,Codeigniter 实际上在整页上显示了该错误:
Error Number: 1451
Cannot delete or update a parent row: a foreign key constraint fails (`testing`.`users_link`, CONSTRAINT `users_link_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`))
DELETE FROM `users` WHERE `id` = '1'
有没有办法让 delete_user 函数返回 FALSE 而不是显示错误?我想通知用户他们必须先做其他事情。我尝试使用事务并返回事务状态,但这仍然会引发错误。