Cómo evitar que se borre un registro de la BD

09/05/2005 - 17:10 por Jordi Faiges | Informe spam
HOLA!!!
Tengo una base de datos en SQL Server con algunas tablas maestras que
permito modificar a través de la aplicación, pero me gustaría evitar que
algunos registros de estas tablas se puedan eliminar (no sólo a través de la
aplicación). Quería saber si puedo evitar el borrado de un registro por
ejemplo a través de un trigger. He probado con un 'Before Delete' pero no me
reconoce el Before. No se si debo utilizar 'Instead of' o alguna otra
posibilidad.

Saludos.

Preguntas similare

Leer las respuestas

#1 qwalgrande
09/05/2005 - 17:54 | Informe spam
Hola.

Un trigger de tipo "instead of" podría resolver tu problema. Recibes el
borrado y lo gestionas antes de lanzarlo. Sin embargo a mí los triggers no
me gustan nada, menos que los cursores.

Como alternativa, te propongo crear una tabla que contenga la clave primaria
de la tabla a proteger y algún campo más si quieres, a modo de descripción.
Luego creas una Foreign key a esta segunda tabla e insertas los registros
protegidos en la segunda tabla. La segunda tabla no está accesible por la
aplicación, con lo que sólo tú la podrás modificar y la integridad
referencial velará por los registros a proteger.

Pero hazlo como veas, no pretendo adoctrinar a nadie sobre el uso o no de
los triggers. Que para mí sean la última opción no significa que no puedan
resolver con facilidad más de un problema.

qwalgrande


"Jordi Faiges" wrote in message
news:ekbW%
HOLA!!!
Tengo una base de datos en SQL Server con algunas tablas maestras que
permito modificar a través de la aplicación, pero me gustaría evitar que
algunos registros de estas tablas se puedan eliminar (no sólo a través de
la
aplicación). Quería saber si puedo evitar el borrado de un registro por
ejemplo a través de un trigger. He probado con un 'Before Delete' pero no
me
reconoce el Before. No se si debo utilizar 'Instead of' o alguna otra
posibilidad.

Saludos.


Respuesta Responder a este mensaje
#2 Jorge Martinez
10/05/2005 - 00:27 | Informe spam
No es por llevar la contraria pero yo optaria por la opcion del Trigger creo
que seria mas efectiva y requeriria de menos mantenimiento.

Salu2

"Jordi Faiges" escribió en el mensaje
news:ekbW#
HOLA!!!
Tengo una base de datos en SQL Server con algunas tablas maestras que
permito modificar a través de la aplicación, pero me gustaría evitar que
algunos registros de estas tablas se puedan eliminar (no sólo a través de


la
aplicación). Quería saber si puedo evitar el borrado de un registro por
ejemplo a través de un trigger. He probado con un 'Before Delete' pero no


me
reconoce el Before. No se si debo utilizar 'Instead of' o alguna otra
posibilidad.

Saludos.


Respuesta Responder a este mensaje
#3 Ricardo Passians
10/05/2005 - 04:14 | Informe spam
Puede ser un simple trigger for DELETE que genere un error con Raiserror
dependiendo de la condición que desees. Claro, debes ver lo que te
recomendaron de si con integridad referencial lo puedes manejar. Pero si no
es el caso, un trigger es lo más adecuado. Para tratar cosas como esas es
que existen y deben usarse.


"Jordi Faiges" wrote in message
news:ekbW%
HOLA!!!
Tengo una base de datos en SQL Server con algunas tablas maestras que
permito modificar a través de la aplicación, pero me gustaría evitar que
algunos registros de estas tablas se puedan eliminar (no sólo a través de


la
aplicación). Quería saber si puedo evitar el borrado de un registro por
ejemplo a través de un trigger. He probado con un 'Before Delete' pero no


me
reconoce el Before. No se si debo utilizar 'Instead of' o alguna otra
posibilidad.

Saludos.


Respuesta Responder a este mensaje
#4 Salvador Ramos
10/05/2005 - 11:12 | Informe spam
Hola, supongo que tendrás descartado el uso de Integridad Referencial
Declarativa porque este no cubra tus espectativas, pero quería confirmarlo
antes de que optases por otras alternativas.

Un saludo
Salvador Ramos
Murcia - España
[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL server, Windows DNA y .NET)

"Jordi Faiges" escribió en el mensaje
news:ekbW%
HOLA!!!
Tengo una base de datos en SQL Server con algunas tablas maestras que
permito modificar a través de la aplicación, pero me gustaría evitar que
algunos registros de estas tablas se puedan eliminar (no sólo a través de
la
aplicación). Quería saber si puedo evitar el borrado de un registro por
ejemplo a través de un trigger. He probado con un 'Before Delete' pero no
me
reconoce el Before. No se si debo utilizar 'Instead of' o alguna otra
posibilidad.

Saludos.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida