SQL - Dudas con UPDATE

 
Vista:

Dudas con UPDATE

Publicado por Hubert Casimiro (98 intervenciones) el 18/08/2005 18:55:12
Buenas.

Mi sistema debe correr sobre cualquier Base de Datos (recien estoy en SQL).
NO debo utilizar Trigers.

Mas omenos este es mi tabla

MITABLA tiene
micampo1 char(10) este es INDICE
micampo2 char(5)
micampo3 char(4)
micampo4 char(5)
micampo5 char(1)
" "
Tengo la siguiente instruccion hecho con una conexion ADO.

UPDATE mitabla SET micampo3 = 'X' WHERE micampo3 = (SELECT micampo3 TOP 1 FROM mitabla WHERE micampo3 ='01' ORDER BY micampo3)
Ahora esta mejor.

Esto hace lo siguiente.
UPDATE actualiza la seleccion de solo UN registro con SELECT .. (TOP 1),

Esto se realiza y hace la actualizacion. El problema esta en:
No puedo identificar cual es el registro que lo hizo, solo me se que lo ha hecho. De algun manera necesito saber que registro a actualizado.

Talvez Actualizar defrente, pero luego saber cual actualizo.

Usando Tablas DBF selecciono, Bloqueo y luego Actualizar y luego soltar de esta manera solo a un usuario se le asigna un registro.

Pero en SQL me estoy trabando.

Gracias por la ayuda.
Cordialmente.
Hubert Casimiro
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Dudas con UPDATE

Publicado por Liliana (426 intervenciones) el 19/08/2005 17:01:20
Hola,
Tal vez no hayas visto mi respuesta en el otro foro, o no entendí lo que necesitás.
Pero si es saber cuál fue la clave de la fila actualizada, entonces yo haría:

-- obtener la menor clave de la tabla que tiene '01' en micampo3
DECLARE @micampo1 int
SELECT @micampo1 = (SELECT TOP 1 micampo1
FROM mitabla
WHERE micampo3 ='01'
ORDER BY micampo1)

-- actualizar micampo3 de esa clave
UPDATE mitabla
SET micampo3 = 'X'
WHERE micampo1 = @micampo1

-- mostrar esa clave que fue actualizada
SELECT @micampo1

Saludos,
Liliana.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dudas con UPDATE

Publicado por Hubert Casimiro (98 intervenciones) el 19/08/2005 20:24:21
Gracias artender LILIANA.

Lo solicitado es para un sistema de colas.
Como comprenderas, hay varios tickets en cola. Y el numero de usuarios que solicitaran los tickets son mas de 50.
Quiere decir que los 50 pueden solicitar en el mismo instante un ticket.
Si los 50 solicitan un ticket. El ticket seleccionao con SELECT tomara su tiempo, y los 50 tendran el mismo ticket. Entonces los 50 querran actualizarlos.

Si tuviera en espera 60 tickets. y 50 ventanillas solicitan tickets en ese mismo instante. Mi intencion es solo darle un ticket a cada Usuario de tal forma que solo deverian quedarme 10 tiskets sobrantes.

Es por eso el comando UDPATE con SELECT.

Cree que con el ejemplo que pones pueda solucionar eso?

Lo voy a revisar.
SI tienes una mejor forma de usar los comandos SQL. te lo voy a agradecer bastante. Si tuvieras links de casos ejemplos con aplicaciones SQL me sera de ayuda.

Si El proceso de Seleccionar un ticket y Actualizar es superveloz entonces no habria problema. Dime. ¿ Esa secuecia ejemplo que me das puede soportar eso?

Gracias por tu respuesta.
Cordialmente.
Hubert Casimiro.
PERU
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dudas con UPDATE

Publicado por Isaías Islas (5072 intervenciones) el 19/08/2005 22:11:46
Con el permiso de mi amiga Liliana.

Lo que debes implementar son TRANSACCIONES, si es que vas a tener multiples solicitudes (mismo codigo de Liliana)

BEGIN TRAN MyTransaccion
-- obtener la menor clave de la tabla que tiene '01' en micampo3
DECLARE @micampo1 int
SELECT @micampo1 = (SELECT TOP 1 micampo1
FROM mitabla
WHERE micampo3 ='01'
ORDER BY micampo1)

-- actualizar micampo3 de esa clave
UPDATE mitabla
SET micampo3 = 'X'
WHERE micampo1 = @micampo1

IF @@ROWCOUNT = 0
BEGIN
SELECT 'ERROR, Al momento de actualizar el registro'
ROLLBACK TRAN MyTransaccion
RETURN(0)
END

-- mostrar esa clave que fue actualizada
SELECT @micampo1
COMMIT TRAN MyTransaccion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Dudas con UPDATE

Publicado por Hubert Casimiro Taco (2 intervenciones) el 19/08/2005 22:17:41
Gracias.
iislasg y LILIANA.
Voy por ese camino entonces.
Cualquier cosa ya se donde encontrarlos....

Cordialmente
Hubert Casimiro T.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar