Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/08/2011, 07:34
jonator
 
Fecha de Ingreso: marzo-2010
Mensajes: 8
Antigüedad: 14 años, 9 meses
Puntos: 1
Trigger de relaciones de clave primaria

Buenas, es la primera vez que cuelgo un post pidiendo ayuda, ya que me gusta encontrar las cosas por mi mismo. Pero esta vez he probado con todo y no soy capaz de ver porque no me sale.

Necesito crear para mi web un trigger que me cree las relaciones entre la base de datos automáticamente. Se trata de dos tablas la de usuarios y la de privilegios, que en una relación N:M se crea una tercera tabla llamada UserPrivileges. Necesito que al entrar un usuario se cree automáticamente todos los privilegios en la N:M que existan en la tabla de privilegios, y viceversa, que cuando cree un privilegio se les sume a todos los usuarios el nuevo privilegio en type = reject.

El Trigger para los privilegios creo que está bien y ha de funcionar, pero como no me funciona el de usuarios no puedo provarlo. El de privilegios es este:
Código PHP:
delimiter $$

CREATE TRIGGER privilegeInsert BEFORE INSERT ON Privilege
  
FOR EACH ROW 
BEGIN
    INSERT INTO UsersPrivilege SET privilege 
= NEW.privilege;
    
UPDATE UsersPrivilege SET type 'reject' where privilege = NEW.privilege;
  
END
$$ 
Y el de users:

Código PHP:
CREATE TRIGGER userInsert AFTER INSERT ON Users
  
FOR EACH ROW 
BEGIN
    
declare i int;
    
= (SELECT idPrivilege FROM Privilege ORDER BY idPrivilege DESC LIMIT 1);
    WHILE 
DO
    
INSERT INTO UsersPrivilege SET idUser = (SELECT idUser FROM Users ORDER BY idUser DESC LIMIT 1); AND SET 
    usersPrivilegeType 
'reject' AND SET privilege = (SELECT privilege FROM privilege where idPrivilege i);
    
END;
  
END
$$
delimiter 
Si alguien sabe la respuesta, o sabe el porque lo estoy haciendo mal, estaría muy agradecido.

Un saludo, ánimo y suerte :D

Última edición por jonator; 14/08/2011 a las 07:45