Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-12-2007
ELINK ELINK is offline
Miembro
 
Registrado: mar 2005
Posts: 55
Poder: 20
ELINK Va por buen camino
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.

Gracias Por adelantado
Responder Con Cita
  #2  
Antiguo 27-12-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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í?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 27-12-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
francamente, la pregunta no me quedó clara!.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 27-12-2007
ELINK ELINK is offline
Miembro
 
Registrado: mar 2005
Posts: 55
Poder: 20
ELINK Va por buen camino
Cita:
Empezado por jachguate Ver Mensaje
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...?
Responder Con Cita
  #5  
Antiguo 27-12-2007
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 28-12-2007
ELINK ELINK is offline
Miembro
 
Registrado: mar 2005
Posts: 55
Poder: 20
ELINK Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 08-01-2008
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
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
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Update con Inner Join Funciona en Access pero no en firebird Acanol Firebird e Interbase 7 27-05-2012 02:25:48
dbgrid pero 2 renglones por registro smessina OOP 7 29-11-2007 00:54:12
Realizar un UPDATE solo de aquellos registros que han variado olbeup SQL 3 03-08-2005 18:56:58
Update registro - fallo con variable Gorehide SQL 4 13-07-2004 20:12:32
mostrar SOLO cliente de los que tengo un sólo registro Giniromero SQL 15 11-06-2004 13:33:19


La franja horaria es GMT +2. Ahora son las 01:23:32.


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
Copyright 1996-2007 Club Delphi