Consultas sobre UPDATE

Mis queridos Expertos, una manito por favor.
Más o menos 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 instrucción
UPDATE mitabla SET micampo3 = 'X' WHERE (SELECT micampo3 TOP 1 FROM mitabla WHERE micampo3 ='01')
Lo que hace es actualizar solo un registro de acuerdo a la instrucción SELECT.
Realmente hace la actualización. Pero quisiera determinar también es cual es el
Registro que actualiza (si pudiera saber cual el micampo1 que es el indice )
Como o con que instrucciones logro capturar el registro afectado (solo es 1) al menos el campo micampo1.
Estoy accediendo a la Base de datos con ADO.
Quizá es otro el procedimiento, favor de ayudarme en esto.
Quedo muy agradecido de Uds.
Cordialmente.
Hubert Casimiro Taco
Perú.

1 Respuesta

Respuesta
1
Puedes utilizar un disparador (TRIGGER) en el cual tienes disponible la fila completa afectada en las tablas Deleted (antes de afectar) e Inserted (luego de afectar). El valor de la columna que necesites lo puedes retornar por RAISERROR.
Gracias
Hola MAVACA.
El sistema debe correr sobre cualquier Base de Datos (recién estoy en SQL).
NO debo utilizar Trigers.
Gracias por responder.
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, hace la actualización. El problema esta en: No puedo identificar cual es el registro que lo hizo, solo me se que lo ha hecho.
La idea es Seleccionar, Bloquear y luego Actualizar y luego soltar.
Sabe que Amigo, yo vengo de desarrollar usando tablas DBF y allí lo haría así.
Pero en SQL me estoy trabando.
Gracias por la ayuda.
Cordialmente.
Hubert Casimiro
El detalle es que tu quieres la solución en ANSI SQL para que funcione en cualquier base. Pero al mismo tiempo indica que deseas la funcionalidad de bloqueo de registro que en Fox. Para eso necesitas usar sentencias de bloque, si es en SQL debe ser sentencia TSQL, para Oracle PL/SQL.
Te doy un link del MSDN para que puedas arrancar.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adosql/adoprg02_4g33.asp
La mejor ayuda la puedes obtener de MSDN y Technet.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas