Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Littl3 en 14 Septiembre 2011, 01:38 am



Título: 2 foreign keys (delete cascade) haciendo referencia a una misma tabla
Publicado por: Littl3 en 14 Septiembre 2011, 01:38 am
Hola,

No soy un gran diseñador de bbdd pero me suelo defender con lo básico para mis consultas desde php... pero con esto me va a explotar la cabeza, os cuento:

Me invento 3 tablas.

users
field_users_value
fields

Quiero poder añadir campos dinamicos a un tipo de usuario determinado, a unos si a otros no, entonces añado a fields un registro que dice que los users de type = X tienen este campo añadido que tiene que rellenar, entonces cuando registro un usuario de type X se guarda un valor en field_users_value que tiene una foreign con fields y otra con users. Es decir que tanto si elimino el field padre, o el user padre, se elimine el field_user_value relacionado, pero me da un pete y debe ser porque la misma tabla tiene 2 claves foraneas con delete cascade.

1005 – Can’t create table ‘field_users_value’ (errno: 150)

Los campos tienen el mismo tipo (INT)..

¿Sabeis si esto se puede hacer?


Título: Re: 2 foreign keys (delete cascade) haciendo referencia a una misma tabla
Publicado por: fran800m en 16 Septiembre 2011, 04:57 am
Uh igual es por la hora pero no me aclaro, por el error que pegas no llegas a crear la tabla field_users_value

Es como si tienes usuario y roles, ¿no? Lo que quieres es borrar el registro de los roles que tenia un usuario cuando éste es eliminado.

No veo dónde puedes tener el problema, si me das más detalle quizá te pueda ayudar, aunque no me molan ni triggers ni cascadas. Solo los "tolero" en casos muy limitados, controlados y documentados, porque como pases algo por alto se lían a saltar triggers y ya la hemos liado.