Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Update!!!, pero solo para un registro (https://www.clubdelphi.com/foros/showthread.php?t=51741)

ELINK 27-12-2007 16:46:08

Update!!!, pero solo para un registro
 
Buen dias con todos :)

Quisiera saber como hacer para, desde la base de datos, negar la actualizacion de mas de un registro a la vez. :confused:

Gracias Por adelantado :D

dec 27-12-2007 16:57:17

Hola,

Código SQL [-]

UPDATE FROM tabla SET campo_texto = 'nuevo valor' WHERE campo_id = 1;

O sea, especificas que quieres actualizar el "campo_texto" sólo del registro cuyo "campo_id" sea 1. ¿No es algo así?

jachguate 27-12-2007 18:54:46

francamente, la pregunta no me quedó clara!.

Hasta luego.

;)

ELINK 27-12-2007 19:08:15

Cita:

Empezado por jachguate (Mensaje 254668)
francamente, la pregunta no me quedó clara!.

Hasta luego.

;)


es simple, POR EJEMPLO alguien del lado del cliente hace un "update datos set nombre = 'Luis' "

aca me coje todos los nombres de la tabla datos y lo pasa a 'Luis'

Lo que quiero es saber si la base de datos a traves de un Trigger (creo) con un error le diga "ha,ha, solo puedes modificar un registro a la vez". Se Puede...? :confused:

jachguate 27-12-2007 19:34:50

Que pasa si alguien hace algo como:

Código SQL [-]
update lista_precios
  set precio = precio * 1.05;

Me parece poco adecuado evitar esto en la base de datos... pero si querés hacerlo, con algo de ingenio, seguramente se puede.

Por ejemplo, creando una tabla auxiliar del tipo:

Código SQL [-]
create table auxiliar_no_actualizaciones (
  usuario varchar(50) not null,
  tabla varchar(50) not null,
  fecha timestamp not null
);

En un trigger before update, verificas que no haya un registro para el usuario/tabla en el último segundo. Si lo hay, elevas una excepción. Si no lo había, lo insertas.

Para evitar que se acumulen los registros en dicha tabla, podrías eliminar todos los registros con mas de 2 o 3 segundos de antiguedad en el mismo trigger before.

Hasta luego.

;)

ELINK 27-12-2007 23:41:42

Cita:

Que pasa si alguien hace algo como:

Código SQL [-]update lista_precios
set precio = precio * 1.05;


Me parece poco adecuado evitar esto en la base de datos... pero si querés hacerlo, con algo de ingenio, seguramente se puede.

Por ejemplo, creando una tabla auxiliar del tipo:
Lo que pasa es q tengo una tabla "caliente" donde cada registro tiene características únicas y SIEMPRE debe ser tratado individualmente (registro por registro), por eso buscaba una forma de prevenir cualquier tipo de "error humano" que ponga en riesgo esta tabla "caliente".

Gracias.

P.D.:el ultimo ejemplo no lo entendí muy bien :(

rastafarey 08-01-2008 20:26:41

resp
 
crea una variable por transaccion y la incrementas en el disparadaor si se pasa del numero de registros que debes actualizar tiras la excepcion.

Solo valido para firebird 2.x


La franja horaria es GMT +2. Ahora son las 17:26:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi