2 foreign keys (delete cascade) haciendo referencia a una misma tabla

Iniciado por Littl3, 14 Septiembre 2011, 01:38 AM

0 Miembros y 1 Visitante están viendo este tema.

Littl3

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?

fran800m

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.