Integridad referencial - Evitar el borrado en cascada.

20/08/2007 - 18:56 por Juan Carlos Flores | Informe spam
Tabla Usuarios:
PKUser
User
fkGrupo

Tabla GrupoUsuarios
PKGrupo
Grupo


Planteo un ejemplo de usuarios y grupos de usuarios, como puedo evitar
el borrado de un grupo si este grupo ya tiene usuarios ?

Solo veo en la relaciones opciones de borrar los usuarios del grupo, o
borrar el grupo y no hacer nada en usuarios o borrar el grupo y dejar
como nulo el campo de FKUser de la tabla de usuarios en los uasuarios
de ese grupo.

Saludos


Preguntas similare

Leer las respuestas

#6 Juan Diego Bueno
20/08/2007 - 23:10 | Informe spam
Pues lo que yo te decía, recurre a triggers, que una de sus funciones es
esa, mantener ese tipo de integridad referencial que tu buscas cuando no hay
otros recursos

Saludos

Juan Diego Bueno www.moondance.tk
"Juan Carlos Flores" escribió en el mensaje
news:
Justamente eso Diego, no quiero borrar grupos de usuarios que tiene
usuarios, y entiendo que debe ser justamente la integridad referencial
la que debe proteger eso, sin embargo no encuentro donde debo
configurar eso, las relaciones solo me permiten escoger entre No
Action, Cascada, Set Null y Default.

En niguna de ellas encuentro como proteger el borrado del grupo debido
a tener usuarios, lo que necesito es poder NEGAR el borrado del grupo
si hay usuarios referidos a el mediante fkGrupo en la tabla de usuarios.

Saludos y gracias por ayudarme.


Juan Carlos Flores
Choluteca, Honduras


Juan Diego Bueno wrote:

Yo lo que he entendido es que no quiere un borrado en cascada, es
decir, que un grupo znicamente se pueda borrar si no tiene usuarios
(es decir, como antes cuando solo podmamos borrar un directorio si
estaba vacmo en msdos con del), pero la relacisn de integridad ya la
tiene puesto que tiene la clave foranea supuestamente enlazada con la
principal de grupo.

A ver, a ver, manifiistate Juan Carlos!!! y dinos que necesitas.

Saludos






Respuesta Responder a este mensaje
#7 Juan Carlos Flores
20/08/2007 - 23:41 | Informe spam
Bueno, si no hay de otra ni modo, mira que eso solo es un ejemplo el
hablar de Usuarios yu Grupos de usuarios, pero si hablamos de los
usuarios por ejemplo, estos puden haber tenido actividades en uno
muchisimas o ninguna de las tablas del sistema, asi que habria que
crear unu procedimiento que verifique en todas las tablas donde hubiera
un FKuser si el usuario que se quiere borrar tiene registros
dependientes.

Me hubiera gustado mas que SQL server lo hubiera hecho por mi con solo
comprender la integridad referencial.

Saludos y gracias.


Juan Carlos Flores
Choluteca, Honduras

Juan Diego Bueno wrote:

Pues lo que yo te decma, recurre a triggers, que una de sus funciones
es esa, mantener ese tipo de integridad referencial que tu buscas
cuando no hay otros recursos

Saludos



Respuesta Responder a este mensaje
#8 principiante
21/08/2007 - 00:19 | Informe spam
En niguna de ellas encuentro como proteger el borrado del grupo debido
a tener usuarios, lo que necesito es poder NEGAR el borrado del grupo
si hay usuarios referidos a el mediante fkGrupo en la tabla de usuarios.

Saludos y gracias por ayudarme.




Si no me equivoco, creo que tienes un confusión.

Es que la relación de integridad hace justamente eso que quieres, por
defecto.

No tienes que configurar más nada, sólo definir la relación de integridad
pura y simplemente. Con eso te dará un error cuando trates de borrar un
grupo que ya tiene usuarios relacionados. No es eso lo que quieres?

De las acciones que hablas son para la actualización en cascada de las
claves foráneas. Eso es otra cosa.


Jose TH
Respuesta Responder a este mensaje
#9 Juan Diego Bueno
21/08/2007 - 00:22 | Informe spam
En ese caso, Juan Carlos, creo que lo más adecuado es que decidas para cada
uno de los supuestos si utilizar borrados en cascada o triggers, porque
supongo que habrá casos en los que puedas hacer un borrado incondicional
(p.e. si tienes un historial de entradas de un usuario, al borrar el
usuario, debería quedar borrado dicho historial incondicionalmente, sino no
tendría sentido su existencia, y obviamente no te vas a poner a borrar
registro por registro)

Y respecto a esto, que me corrija alguien si me equivoco, no se si algún
SGBD permite lo que tu planteas sin el uso de triggers añadiendo algún tipo
de cláusulas. Si algún experto en otros SGBD conoce algo similar, estaría
bien su aportación.

Suerte, saludos

Juan Diego Bueno www.moondance.tk

"Juan Carlos Flores" escribió en el mensaje
news:
Bueno, si no hay de otra ni modo, mira que eso solo es un ejemplo el
hablar de Usuarios yu Grupos de usuarios, pero si hablamos de los
usuarios por ejemplo, estos puden haber tenido actividades en uno
muchisimas o ninguna de las tablas del sistema, asi que habria que
crear unu procedimiento que verifique en todas las tablas donde hubiera
un FKuser si el usuario que se quiere borrar tiene registros
dependientes.

Me hubiera gustado mas que SQL server lo hubiera hecho por mi con solo
comprender la integridad referencial.

Saludos y gracias.


Juan Carlos Flores
Choluteca, Honduras

Juan Diego Bueno wrote:

Pues lo que yo te decma, recurre a triggers, que una de sus funciones
es esa, mantener ese tipo de integridad referencial que tu buscas
cuando no hay otros recursos

Saludos






Respuesta Responder a este mensaje
#10 Juan Carlos Flores
21/08/2007 - 00:26 | Informe spam
Bien, entonces donde lo hago ?

Uso MS SQL Server 2005


Gracias


Juan Carlos Flores
Choluteca, Honduras


principiante wrote:

> En niguna de ellas encuentro como proteger el borrado del grupo
> debido a tener usuarios, lo que necesito es poder NEGAR el borrado
> del grupo si hay usuarios referidos a el mediante fkGrupo en la
> tabla de usuarios.
>
> Saludos y gracias por ayudarme.


Si no me equivoco, creo que tienes un confusisn.

Es que la relacisn de integridad hace justamente eso que quieres, por
defecto.

No tienes que configurar mas nada, sslo definir la relacisn de
integridad pura y simplemente. Con eso te dara un error cuando
trates de borrar un grupo que ya tiene usuarios relacionados. No es
eso lo que quieres?

De las acciones que hablas son para la actualizacisn en cascada de
las claves foraneas. Eso es otra cosa.


Jose TH



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida