Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

se puede consultar y insertar a la vez?

Estas en el tema de se puede consultar y insertar a la vez? en el foro de Mysql en Foros del Web. tengo una tabla mensajes que cuando se lee un mensaje pongo el campo leido a 1 es por eso que nose si se puede hacer ...
  #1 (permalink)  
Antiguo 26/01/2009, 14:12
 
Fecha de Ingreso: abril-2008
Mensajes: 144
Antigüedad: 16 años
Puntos: 1
Pregunta se puede consultar y insertar a la vez?

tengo una tabla mensajes que cuando se lee un mensaje pongo el campo leido a 1 es por eso que nose si se puede hacer todo junto.. o tengo ke hacerlo pos separado...


Código PHP:
//la consulta....

 
$sql "SELECT m.missatge, m.data, m.titol, m.idorigen ,m.usersend, g.id, g.usuari      FROM missatges m ,granges g 
                        WHERE g.usuari like '$usuari'
                            and m.idorigen = g.id
                        and m.llegit=0"

luego quiero actualizar la tabla y poner un 1 en leido..como se hace???


.... asi no creo no? xD :P
and INSERT INTO missatges (idorigen,titol, missatge, llegit, data, usersend) VALUES ('$usuari','$titolmis' 'm.missatge', 1,'m.data' ,'$userenviat')";
  #2 (permalink)  
Antiguo 26/01/2009, 19:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: se puede consultar y insertar a la vez?

Lo que debes de hacer es un UPDATE sobre tus datos para cambiar la columna de leido a 1.

Saludos
  #3 (permalink)  
Antiguo 27/01/2009, 08:39
 
Fecha de Ingreso: abril-2008
Mensajes: 144
Antigüedad: 16 años
Puntos: 1
Respuesta: se puede consultar y insertar a la vez?

Cita:
Iniciado por GatorV Ver Mensaje
Lo que debes de hacer es un UPDATE sobre tus datos para cambiar la columna de leido a 1.

Saludos
se puede hacer el update en la misma consulta? o se tiene que hacer en otra por separado??

$sql = "SELECT m.missatge, m.data, m.titol, m.idorigen ,m.usersend, g.id, g.usuari
FROM missatges m ,granges g
WHERE g.usuari like '$usuari'
and m.llegit=0
and m.data = '$datamis'
and m.titol = '$titolmis'";
-----) //and update missatges set llegit =1
  #4 (permalink)  
Antiguo 27/01/2009, 09:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: se puede consultar y insertar a la vez?

existen en este tipo de operaciones una serie de restricciones de consistencia:
1. No se puede leer y borrar un registro en la misma operación. Sería como tratar de cortar la rama sobre la que estás parado en un árbol.
2. No se puede actualizar el mismo registro que se está leyendo. MySQL no puede saber a priori si el dato que estás modificando no es el mismo que usó para encontrar el registro.
3. No puedes hacer un JOIN sobre la misma tabla para realizar operaciones de DDL o DML. Esas operaciones pueden dar lugar a inconsistencias en el proceso.
4. No se pueden implementar operaciones de UPDATE sobre la misma tabla en un TRIGGER. Por las mismas razones más la básica: estarías haciendo un ciclo recursivo eterno.

Si lo meditas, las restricciones salen de la lógica propia característica de las operaciones invocadas. Algunas de estas no aparecen en los manuales o en los tutoriales porque son restricciones elementales en programación en todos los lenguajes, por lo que son conocidas por los programadores (vox populi).
De todos modos no está de más aclararlas. A veces a uno se le olvidan.

En esencia, lo que tratas de lograr es hacer la menor cantidad de operaciones para obtener los mayores resultados. Eso no siempre se puede lograr, y de todos modos, cuando trabajas con datos, es mejor hacer las cosas en forma ortodoxa, porque un diseño de consulta mal realizado puede significar meses de datos perdidos...
Es mejor hacer las operaciones por parte.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 27/01/2009, 13:47
 
Fecha de Ingreso: abril-2008
Mensajes: 144
Antigüedad: 16 años
Puntos: 1
Respuesta: se puede consultar y insertar a la vez?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
existen en este tipo de operaciones una serie de restricciones de consistencia:
1. No se puede leer y borrar un registro en la misma operación. Sería como tratar de cortar la rama sobre la que estás parado en un árbol.
2. No se puede actualizar el mismo registro que se está leyendo. MySQL no puede saber a priori si el dato que estás modificando no es el mismo que usó para encontrar el registro.
3. No puedes hacer un JOIN sobre la misma tabla para realizar operaciones de DDL o DML. Esas operaciones pueden dar lugar a inconsistencias en el proceso.
4. No se pueden implementar operaciones de UPDATE sobre la misma tabla en un TRIGGER. Por las mismas razones más la básica: estarías haciendo un ciclo recursivo eterno.

Si lo meditas, las restricciones salen de la lógica propia característica de las operaciones invocadas. Algunas de estas no aparecen en los manuales o en los tutoriales porque son restricciones elementales en programación en todos los lenguajes, por lo que son conocidas por los programadores (vox populi).
De todos modos no está de más aclararlas. A veces a uno se le olvidan.

En esencia, lo que tratas de lograr es hacer la menor cantidad de operaciones para obtener los mayores resultados. Eso no siempre se puede lograr, y de todos modos, cuando trabajas con datos, es mejor hacer las cosas en forma ortodoxa, porque un diseño de consulta mal realizado puede significar meses de datos perdidos...
Es mejor hacer las operaciones por parte.

muchas gracias!!! otra pequeña question.. se puede hacer prefijos en uptades tambien? como asi....

UPDATE granges g,
missatges m SET m.llegit =1 WHERE g.usuari LIKE 'genero' AND m.llegit =0 AND m.DATA = '27-01-2009'

gracias
  #6 (permalink)  
Antiguo 27/01/2009, 15:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: se puede consultar y insertar a la vez?

Cita:
se puede hacer prefijos en uptades tambien?
No me queda claro a qué te refieres con prefijos. Pareciera que te refieres a los ALIAS de tablas y campos. Si eso es lo que quieres decir, si. dentro de una sentencia DML como es UPDATE corren los mismos usos en el manejo de nombres que para un SELECT o un INSERT o un DELETE.
Estas cosas las puedes encontrar en el manual oficial(13.2. Sentencias de manipulación de datos ), e incluso en cualquier manual de SQL, porque pertenecen al estándar de SQL (ANSI SQL 1999:2000)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:03.