gambafeliz   12-10-2020, 20:10
#1
Hola

Estoy derrotado. Acabo tirar la toalla y no se si cortarme las venas o dejarmelas largas. Ayuda po favor.

Bueno después de mi gran derrota pido a un semi-Dios que me ayude.

Os describo el problema:
Tengo:
El campo RowNum
SELECT ROW_NUMBER() OVER (ORDER BY Descripción ASC) RowNum, * FROM Inmovilizado GROUP BY Descripción ORDER BY Descripción ASC;

Base de datos SQLite3
Tabla: Inmovilizado
Acción: Update (Este es mi problema a solucionar)
Where: Pretendo buscar el registro en la tabla Inmovilizado que tengo ROW_NUMBER() = RowNum

Pero, ¿Como?

Esto es algo parecido que funciona pero me funciona para buscar, osea, en un SELECT:

Select * From (Select ROW_NUMBER() OVER (ORDER BY Descripción ASC) RowNum, Estado, FechaEstado From Inmovilizado) t WHERE RowNum = 1;

En fin, me ayuda.

Gracias y suerte que es muy necesaria para el valiente que lo haga.
omoreno   13-10-2020, 00:26
#2
Hola gambafeliz.

Si te refieres a poder actualizar un registro de la tabla utilizando fila de la tabla, prueba con esto:
 
Código:
UPDATE inmovilizado SET descripcion='ABC' WHERE rowid=3

Saludos.
gambafeliz   13-10-2020, 09:06
#3
Gracias omoreno

Efectivamente ayer lo resolví así como tu propones, poco después de poner la pregunta. Pero no lo puse como resuelto la pregunta, por que como el hilo pide una solución determinada y no tu propuesta, pues, lo dejé para saber la solución a la propuesta en el hilo.

Saludos, joven
calcena   11-11-2020, 16:11
#4
Buenas yo así lo que veo es que el row_number() o rowid se genera en memoria de la propia transacionalidad, por tanto mi opinión, o lo que yo implementaría sería realizar el ordenamiento y hacer un select del row_number() para obtener tu Id de tabla y posteriormente updatear sobre ese ID la tabla.
Yo, primero no le veo diferencia a querer hacerlo con el row_number() que tampoco se si se podrá, pero se pueda o no, veo factible la obtención-actualización en dos pasos.
Si hablasemos de SGBD más completos te diría de montar un SP o un Package para que esa misma funcionalidad se implementase y entonces tú llamando desde tu backend obtendrías el resultado directamente de la trasacción final row_affected.
Al tratarse de una DB que se ejecuta con las particularidades que tiene, bloqueo para concurrencia, no SP, no TRG ...etc ..pues tenemos que apañarnos con lo que hay.
Saludos.
Última modificación: 11-11-2020, 16:16 por calcena.
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.