hacer un update a un registro en una tabla con las mismas llaves

765 views
Skip to first unread message

MOISES CARBAJAL

unread,
Oct 11, 2016, 12:38:16 AM10/11/16
to publice...@googlegroups.com
buen dia,

espero explicarme, 

tengo una tabla donde guardo x cantidad de registros, mismas llaves, después quiero actualizar un campo, pero en un solo registro no en todos.

es como que fuera un detalle de factura que posee x registros, y mas adelante le pones alguna observación, pero se requiere que se guarde en el primer registro,

gracias por su apoyo. 

Germán Fabricio Valdez

unread,
Oct 11, 2016, 7:01:18 PM10/11/16
to Comunidad de Visual Foxpro en Español
la verdad no entiendo que queres hacer ademas son dbf de fox o es un motor de base de datos y cual?
si podes pasar las tablas y detallar mas la informacion

Carlos Miguel FARIAS

unread,
Oct 11, 2016, 7:53:19 PM10/11/16
to Grupo Fox
Si son tablas locales, sobre la llave (la traducción correcta es clave) crea un índice unique (fox indexa un solo registro en ese índice, los demás los descarta), luego haces un seek con el valor de clave necesaria, el único registro recuperado lo actualizas
Otra opción es hacer un LOCATE para ese valor de clave, te trae un registro, ese es el primero que encuentra (depende de indices activos), y ese es el que podes actualizar.
Si usas un SGBD, evidentemente el campo índice no es ni primario, ni unique.
Vas a estar atado a la capacidad del update del sql, algunos permiten limitar la cantidad de registros que se actualizan.
en mysql al final colocas una clausula LIMIT 1, y aunque haya varios registros que reúnan las condiciones, solo actualiza uno (es indeterminado si es el primero, último o cuál dentro del conjunto).

Otra posibilidad, y solo aplicable si tu tabla a actualizar tiene clave primaria es
VFP? SQLServer?
UPDATE tuTabla SET tuCampo = tuValor
    WHERE tuPrimaria IN (SELECT TOP 1 tuPrimaria
                            FROM tuTabla WHERE lasLlaves = unaLLave)

POSTGRESQL
UPDATE tuTabla SET tuCampo = tuValor
    WHERE tuPrimaria IN (SELECT tuPrimaria
                            FROM tuTabla WHERE lasLlaves = unaLLave LIMIT 1)
MySQL
UPDATE tuTabla SET tuCampo = tuValor WHERE lasLlaves = unaLLave LIMIT 1

Saludos: Miguel, La Pampa (RA)
Larga Vida y Prosperidad 🖖
Que la Fuerza los acompañe 🚜

MOISES CARBAJAL

unread,
Oct 19, 2016, 12:29:32 AM10/19/16
to publice...@googlegroups.com
Gracias Carlos Faria, ese limit era el que necesitaba!!
Reply all
Reply to author
Forward
0 new messages