Boas colegas. Estou com o seguinte problema, preciso que quando uma ação de inserção de empréstimo seja disparada para a tabela emp_emprestimo
automaticamente seja feito um update na tabela chamada genero_frequencia_emprestimos
onde temos unicamente duas tuplas definidas para o genero masculino e o genero femenino dependendo do género do utente que fez o empréstimo na tupla e somar +1 no campo gef_numeroutentes
. Porém o genero do utente apenas esta registado na tabela ute_utente. Como poderei realizar esta operação?
tentei usar o trecho de código abaixo mais não resultou, porém o mysql aceitou o código mas na inserção de empréstimo deu erro:
create trigger update_frequencia_emp_generoMasc after insert on emp_emprestimo for each row update genero_frequencia_emprestimos set gef_numeroutentes=gef_numeroutentes + 1 where gef_id=1 and new.emp_utenteid.ute_genero="M";
abaixo deixo o código das tabelas:
Tabela de utentes:
CREATE TABLE `ute_utente` (
`ute_id` int(11) NOT NULL AUTO_INCREMENT,
`ute_nome` varchar(100) NOT NULL,
`ute_dataNascimento` date NOT NULL,
`ute_genero` enum('F','M') NOT NULL,
`ute_naturalidade` varchar(50) NOT NULL,
`ute_bi` varchar(13) NOT NULL,
`ute_nomePai` varchar(100) DEFAULT NULL,
`ute_nomeMae` varchar(100) DEFAULT NULL,
`ute_localTrabalho` varchar(50) DEFAULT NULL,
`ute_contacto` varchar(9) DEFAULT NULL,
`ute_estado` enum('Não permitido','Permitido') NOT NULL,
`ute_numeroEmps` int(11) DEFAULT '0',
`ute_dataRegisto` date DEFAULT NULL,
`ute_instituicaoId` int(11) DEFAULT NULL,
`ute_enderecoId` int(11) DEFAULT NULL,
PRIMARY KEY (`ute_id`),
UNIQUE KEY `ute_bi_UNIQUE` (`ute_bi`),
KEY `ute_instituicaoId` (`ute_instituicaoId`),
KEY `ute_enderecoId` (`ute_enderecoId`),
CONSTRAINT `ute_utente_ibfk_4` FOREIGN KEY (`ute_instituicaoId`) REFERENCES `ins_instituicaoensino` (`ins_id`),
CONSTRAINT `ute_utente_ibfk_5` FOREIGN KEY (`ute_enderecoId`) REFERENCES `ute_endereco` (`ute_enderecoid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8
Tabela de emprestimos:
CREATE TABLE `emp_emprestimo` (
`emp_id` int(11) NOT NULL AUTO_INCREMENT,
`emp_utenteId` int(11) DEFAULT NULL,
`emp_livroId` int(11) DEFAULT NULL,
`emp_dataRegisto` datetime DEFAULT NULL,
PRIMARY KEY (`emp_id`),
KEY `emp_utenteId` (`emp_utenteId`),
KEY `emp_livroId` (`emp_livroId`),
CONSTRAINT `emp_emprestimo_ibfk_1` FOREIGN KEY (`emp_utenteId`) REFERENCES `ute_utente` (`ute_id`),
CONSTRAINT `emp_emprestimo_ibfk_2` FOREIGN KEY (`emp_livroId`) REFERENCES `liv_livro` (`liv_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 |
tabela onde deve acontecer a operação
CREATE TABLE `genero_frequencia_emprestimos` (
`gef_id` int(11) NOT NULL AUTO_INCREMENT,
`gef_genero` varchar(20) DEFAULT NULL,
`gef_numeroUtentes` int(11) DEFAULT '0',
`gef_numeroVezes` int(11) DEFAULT '0',
PRIMARY KEY (`gef_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8