笨外键约束检查(Codeigniter foreign key constraint check)

2019-07-29 06:18发布

让我先解释一下表结构:

+-----------+--------------+------+-----+---------+----------------+
| 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));
}

当该用户从其他表引用,则应该抛出一个错误。 “坏”的事情是,笨实际显示完整页面上的错误:

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,而不是显示错误? 我想通知他们必须做别的事情第一用户。 我尝试使用交易并返回transaction_status,但仍然引发错误。

Answer 1:

在config文件夹database.php中文件中找到行

$db['default']['db_debug']

并将其设置为FALSE。 这将防止从笨打印屏幕上的错误。

另外,在删除功能,您可以检查:

if ($this->db->_error_number() == 1451)

如果你需要做一些特别的东西,当这种情况发生。



文章来源: Codeigniter foreign key constraint check