update una tablas soporta simultaneamente segundo rapida por optimizar mas lentas hacer ejemplo cuantas consultas consulta como agilizar mysql database codeigniter activerecord

una - optimizar consultas mysql explain



codeigniter-base de datos: cómo actualizar varias tablas con una única consulta de actualización (2)

Vi esto en el foro codeigniter

Teniendo en cuenta el código a continuación

UPDATE a INNER JOIN b USING (id) SET a.firstname=''Pekka'', a.lastname=''Kuronen'', b.companyname=''Suomi Oy'',b.companyaddress=''Mannerheimtie 123, Helsinki Suomi'' WHERE a.id=1;

Así es como aparentemente lo harías en Codeigniter

$this->db->set(''a.firstname'', ''Pekka''); $this->db->set(''a.lastname'', ''Kuronen''); $this->db->set(''b.companyname'', ''Suomi Oy''); $this->db->set(''b.companyaddress'', ''Mannerheimtie 123, Helsinki Suomi''); $this->db->where(''a.id'', 1); $this->db->join(''table2 as b'', ''a.id = b.id''); $this->db->update(''table as a'');

esto no funciona en la realidad He echado un vistazo al SQL que esto produce y los resultados ni siquiera mencionan la unión.

¿Alguien tiene alguna idea de cómo hacer una actualización con una unión utilizando la clase de base de datos de Active Record de Codeigniter?


Una solución que he encontrado es eliminar la combinación por completo y mover la condición de unión a una función ''donde'', también deberá cambiar la cadena de actualización para incluir la nueva tabla.

$this->db->set(''a.firstname'', ''Pekka''); $this->db->set(''a.lastname'', ''Kuronen''); $this->db->set(''b.companyname'', ''Suomi Oy''); $this->db->set(''b.companyaddress'', ''Mannerheimtie 123, Helsinki Suomi''); $this->db->where(''a.id'', 1); $this->db->where(''a.id = b.id''); $this->db->update(''table as a, table2 as b'');


Usar dos consultas separadas dentro de una transacción debería resolver su problema. Si una consulta falla, la otra se retrotrae.