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 Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-09-2012
Efren2006 Efren2006 is offline
Miembro
 
Registrado: feb 2006
Posts: 172
Poder: 19
Efren2006 Va por buen camino
Evitar Borrar un Registro

Se puede colocar alguna manera hacer que en una tabla Firebird que no se puedan eliminar Registro

Como una regla ?
En un Trigger de Before Delete ?

Gracia por sus aportes
Responder Con Cita
  #2  
Antiguo 21-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Por supuesto, pero ¿que no se borre ninguno?
Responder Con Cita
  #3  
Antiguo 21-09-2012
Efren2006 Efren2006 is offline
Miembro
 
Registrado: feb 2006
Posts: 172
Poder: 19
Efren2006 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Por supuesto, pero ¿que no se borre ninguno?
Casimiro Notevi

Quiero evitar que por algún error de programa o un usuario borre un registro de una tabla determinada, pero ojo no del lado del programa quiero validarlo en la Base de Datos

Imaginemos una tabla de artículos y por error el usuario le da al botón de eliminar o alguien con una herramienta como IbExpert tenga acceso a la BD e intente borrar un registro de esta tabla .... Quiero Blindar la BD para que no permita borrar ningun registro de esta tabla.. por supuesto que pueda controlar esta validación para que a futuro pueda activar o desactivar la misma

Espero haber sido claro

Gracias por el tiempo
Responder Con Cita
  #4  
Antiguo 21-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Ya, vale, pero ¿cómo distingues los registros que pueden ser borrados y los que no?.
Mejor dicho, ¿cuándo vas a querer que se borren y cuándo no vas a querer?,
¿controlarlo en razón a qué criterios?, ¿permitir borrar los números pares?, ¿permitir borrar los lunes?, ¿añadir un campo para permitir borrar?, etc.
En este caso no serviría de nada, porque si no puede borrarlo entonces va y modifica ese campo, borra el registro y vuelve a poner ese campo en "no permitir borrar".
En fin, que creo que debes explicar con más detalle exactamente lo que quieres conseguir.
Responder Con Cita
  #5  
Antiguo 21-09-2012
Efren2006 Efren2006 is offline
Miembro
 
Registrado: feb 2006
Posts: 172
Poder: 19
Efren2006 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Ya, vale, pero ¿cómo distingues los registros que pueden ser borrados y los que no?.
Mejor dicho, ¿cuándo vas a querer que se borren y cuándo no vas a querer?,
¿controlarlo en razón a qué criterios?, ¿permitir borrar los números pares?, ¿permitir borrar los lunes?, ¿añadir un campo para permitir borrar?, etc.
En este caso no serviría de nada, porque si no puede borrarlo entonces va y modifica ese campo, borra el registro y vuelve a poner ese campo en "no permitir borrar".
En fin, que creo que debes explicar con más detalle exactamente lo que quieres conseguir.
Explico

No existe criterio,, simplemente después que se incluya un registro en esa tabla no se pueda borrar,, hasta que yo como el administrador de la base de datos quite esa validación o Regla.

Gracia Casimiro por el tiempo
Responder Con Cita
  #6  
Antiguo 21-09-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Puedes crear una exception, ejemplo:
Código SQL [-]
CREATE EXCEPTION EXCP_NO_BORRAR 'No está permitido borrar este registro.';
Y luego un trigger en el BeforeDelete de la tabla:
Código SQL [-]
CREATE TRIGGER TBUSUARIOS_BD0 FOR TBUSUARIOS
ACTIVE BEFORE DELETE POSITION 0
AS
begin
/*  if (old.codigousuario=1) then  */
    exception excp_no_borrar;
end
^

Aunque si quieres permitir borrar entonces tendrás que desactivar el trigger.
¿Es eso lo que quieres?
Responder Con Cita
  #7  
Antiguo 21-09-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Efren2006 Ver Mensaje
Imaginemos una tabla de artículos y por error el usuario le da al botón de eliminar
Y si no se permite borrar, ¿por qué hay un botón para tal efecto?

// Saludos
Responder Con Cita
  #8  
Antiguo 21-09-2012
Efren2006 Efren2006 is offline
Miembro
 
Registrado: feb 2006
Posts: 172
Poder: 19
Efren2006 Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Y si no se permite borrar, ¿por qué hay un botón para tal efecto?

// Saludos
Efectivamente

El problema es que tengo un error con una aplicación determinada que esta permitiendo borrar registros de una tabla, mientras descubro el problema necesito temporalmente evitar que eliminen los registros.
Responder Con Cita
  #9  
Antiguo 21-09-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Efren2006 Ver Mensaje
El problema es que tengo un error con una aplicación determinada que esta permitiendo borrar registros de una tabla, mientras descubro el problema necesito temporalmente evitar que eliminen los registros.
¡Ah! Por ahí hubieras comenzado

Casimiro, ¿Firebird no permite prohibir por usuario acciones como el borrado de registros? Es que me parece curioso el método del trigger. En MySQL habría más bien pensado en restringir al usuario que se conecta quitándole el permiso de borrado sobre esa tabla.

// Saludos
Responder Con Cita
Respuesta



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
Trigger - evitar borrado de registro StartKill MySQL 1 04-03-2008 14:49:24
Evitar el agregar registro en una DbCtrlGrid Manuel Varios 4 27-11-2006 19:22:45
Como Evitar Borrar Registro en dbGrid al Presionar ESCAPE ???? AGAG4 Varios 4 07-07-2006 04:30:20
Evitar Borrar más filas con DBGRID User_Baja_2 Varios 4 12-01-2006 23:59:09
Borrar lineas detalle al borrar registro maestro akinom38 Conexión con bases de datos 3 11-01-2006 10:38:07


La franja horaria es GMT +2. Ahora son las 16:56:36.


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