Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/03/2013, 08:13
franroa
 
Fecha de Ingreso: diciembre-2012
Mensajes: 21
Antigüedad: 11 años, 11 meses
Puntos: 0
usuarios free / premium

Hola, muy buenas. Estoy haciendo una BD más o menos seria por primera vez. Y ahora me estoy preocupando por las relaciones. Tal vez alguna pregunta parecida esté por ahí, pero no se ni que palabras clave usar para la búsqueda en el foro..

La pregunta que me ha surgido es la siguiente: Tengo planeado la tabla usuarios con un campo "premium". Si el usuario es premium los archivos que suba al servidor no se compartirán. En cambio, si es free, se compartirán con el resto de los usuarios.

El pseudocódigo seria (creo) algo asi:

if(select premium from users == YES){
insert into filespremium
}else(select premium from users == NO){
insert into filesfree
}


Mi problema es que no se si esto se puede hacer con una rutina de mysql. No se si con trigger valdría o con PHP. Siento la pregunta estúpida, pero no he usado un trigger nunca y no encuentro la manera de meter un select y un if dentro de un trigger before.

Pensaba hacer algo así, pero no creo que sea muy viable:

DELIMITER $$
TRIGGER files
BEFORE INSERT ON agora.filesfree
FOR EACH ROW
BEGIN
IF (SELECT premium FROM agora.users == “YES” )
INSERT INTO freefiles (…) VALUES (…);
ELSE
INSERT INTO premium (…) VALUES (…);
END IF;

END$$



Las tablas son estas. Muchas gracias!:

CREATE TABLE users(
userID INT(11) NOT NULL AUTO_INCREMENT,
user VARCHAR(20) NOT NULL,
password VARCHAR(10) NOT NULL,
premium ENUM ('YES', 'NO') NOT NULL DEFAULT 'NO',
uImgPath VARCHAR(10),
uGradation VARCHAR(15),
PRIMARY KEY (userID)
)ENGINE=INNODB;



CREATE TABLE filesfree(
fileFreeID BIGINT NOT NULL AUTO_INCREMENT,
ffPath TEXT NOT NULL,/*UNIQUE*/
ffType ENUM('IMAGE', 'VIDEO', 'PRESENTATION', 'DOCUMENT', 'WEB', 'NOTE', 'BOOK', 'AUDIO') NOT NULL,
ffName VARCHAR (20) NOT NULL,
ffDate DATE NOT NULL,
PRIMARY KEY (fileFreeID)
)ENGINE=INNODB;




CREATE TABLE filespremium(
filePremiumID BIGINT NOT NULL AUTO_INCREMENT,
fpPath TEXT NOT NULL,/*UNIQUE*/
fpType ENUM('IMAGE', 'VIDEO', 'PRESENTATION', 'DOCUMENT', 'WEB', 'NOTE', 'BOOK', 'AUDIO') NOT NULL,
fpName VARCHAR (20) NOT NULL,
fpDate DATE NOT NULL,
fpUploader INT NOT NULL,
PRIMARY KEY (filePremiumID),
INDEX (fpUploader),
FOREIGN KEY (fpUploader)
REFERENCES users(userID)
ON UPDATE CASCADE ON DELETE CASCADE
)ENGINE=INNODB;