Verificación de restricción de clave foránea
Permítanme primero explicar la estructura de la mesa:
<code>+-----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | firstname | varchar(255) | NO | | NULL | | | name | varchar(255) | NO | | NULL | | +-----------+--------------+------+-----+---------+----------------+ </code>
El campo id es referenciado desde otra tabla a través de una clave externa.
Digamos que tengo una función en mi modelo como esta:
<code>public function delete_user($id) { return $this->db->delete('users', array('id' => $id)); } </code>
Cuando se hace referencia a este usuario desde la otra tabla, debería arrojar un error. Lo "malo" es que Codeigniter realmente muestra ese error en una página completa:
<code>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' </code>
¿Hay alguna manera de hacer que la función delete_user devuelva FALSE en lugar de mostrar el error? Me gustaría notificar al usuario que tienen que hacer otra cosa primero. Intenté usar transacciones y devolver el transaction_status, pero eso sigue generando el error.