Ir para conteúdo
Fórum Script Brasil

Luiz Fernando Rodrigues

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre Luiz Fernando Rodrigues

Luiz Fernando Rodrigues's Achievements

0

Reputação

  1. Bom dia Denis. Obrigado por responder. Eu acabei resolvendo o problema de uma outra maneira. Estou fazendo o controle de exemplares com uma instrução SQL onde analiso a existência do registro (exemplar) na própria tabela de empréstimos ou devoluções. Com isso o próprio MySQL me retorna exemplares emprestados pois quando estes existem na tabela como renovações ou devoluções são automaticamente excluídos das tuplas de retorno. De qualquer modo, agradeço pelas orientações. Abraços. Fernando.
  2. Boa tarde. Tenho o seguinte cenário. Uma tabela chamada [exemplares_emprestimos_biblioteca]. Quando executo uma rotina de renovação de exemplares, insiro um novo registro nessa tabela apontando para o registro anterior (id_exemplar_emprestimo_vinculado), assim consigo saber que o exemplar é vinculado a um empréstimo anterior. Ocorre que preciso alterar um campo dessa mesma tabela indicando que o empréstimo anterior foi encerrado. Observei que não posso utilizar triggers para a mesma tabela portanto criei um tabela auxiliar chamada [renovações_exemplares_emprestimos_biblioteca]. Aí criei uma stored procedure e uma trigger para inserir nesta tabela auxiliar toda vez que o registro tem exemplar vinculado. Em seguida criei uma outra stored procedure e uma outra trigger sobre essa tabela auxiliar para alterar a flag que preciso mas observei que caio no mesmo problema pois me retorna o mesmo erro. Erro SQL (1452). Alguém sugere alguma solução para o problema? Abraços Luiz Fernando. Segue abaixo meus códigos: CREATE TABLE `exemplares_emprestimos_biblioteca` ( `id_exemplar_emprestimo_biblioteca` INT(10) UNSIGNED ZEROFILL NOT NULL AUTO_INCREMENT, `data_cadastro` DATETIME NOT NULL, `id_usuario_cadastro` INT(10) UNSIGNED ZEROFILL NOT NULL, `data_alteracao` DATETIME NULL DEFAULT NULL, `id_usuario_alteracao` INT(10) UNSIGNED ZEROFILL NULL DEFAULT NULL, `id_exemplar_titulo` INT(10) UNSIGNED ZEROFILL NOT NULL, `id_emprestimo_biblioteca` INT(10) UNSIGNED ZEROFILL NOT NULL, `data_devolucao_exemplar_titulo` DATE NOT NULL, `hora_devolucao_exemplar_titulo` TIME NOT NULL, `status_exemplar_emprestimo_biblioteca` ENUM('E','D','R') NOT NULL DEFAULT 'E', `id_exemplar_emprestimo_biblioteca_vinculado` INT(10) UNSIGNED ZEROFILL NULL DEFAULT NULL, PRIMARY KEY (`id_exemplar_emprestimo_biblioteca`), UNIQUE INDEX `id_exemplar_emprestimo_biblioteca_UNIQUE` (`id_exemplar_emprestimo_biblioteca`), INDEX `fk_exemplares_emprestimos_biblioteca_idx1` (`id_usuario_cadastro`), INDEX `fk_exemplares_emprestimos_biblioteca_idx2` (`id_usuario_alteracao`), INDEX `fk_exemplares_emprestimos_biblioteca_idx3` (`id_exemplar_titulo`), INDEX `fk_exemplares_emprestimos_biblioteca_idx4` (`id_emprestimo_biblioteca`), INDEX `fk_exemplares_emprestimos_biblioteca_idx5` (`id_exemplar_emprestimo_biblioteca_vinculado`), CONSTRAINT `fk_exemplares_emprestimos_biblioteca_idx1` FOREIGN KEY (`id_usuario_cadastro`) REFERENCES `usuarios` (`id_usuario`) ON UPDATE CASCADE, CONSTRAINT `fk_exemplares_emprestimos_biblioteca_idx2` FOREIGN KEY (`id_usuario_alteracao`) REFERENCES `usuarios` (`id_usuario`) ON UPDATE CASCADE, CONSTRAINT `fk_exemplares_emprestimos_biblioteca_idx3` FOREIGN KEY (`id_exemplar_titulo`) REFERENCES `exemplares_titulos` (`id_exemplar_titulo`) ON UPDATE CASCADE, CONSTRAINT `fk_exemplares_emprestimos_biblioteca_idx4` FOREIGN KEY (`id_emprestimo_biblioteca`) REFERENCES `emprestimos_biblioteca` (`id_emprestimo_biblioteca`) ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT `fk_exemplares_emprestimos_biblioteca_idx5` FOREIGN KEY (`id_exemplar_emprestimo_biblioteca_vinculado`) REFERENCES `exemplares_emprestimos_biblioteca` (`id_exemplar_emprestimo_biblioteca`) ON UPDATE CASCADE ) COLLATE='utf8_general_ci' ENGINE=InnoDB AUTO_INCREMENT=27; CREATE TABLE `renovacoes_exemplares_emprestimos_biblioteca` ( `id_exemplar_emprestimo_biblioteca` INT(10) UNSIGNED ZEROFILL NOT NULL, `id_exemplar_emprestimo_biblioteca_vinculado` INT(10) UNSIGNED ZEROFILL NOT NULL, PRIMARY KEY (`id_exemplar_emprestimo_biblioteca`, `id_exemplar_emprestimo_biblioteca_vinculado`), INDEX `fk_renovacoes_exemplares_emprestimos_biblioteca_idx1` (`id_exemplar_emprestimo_biblioteca`), INDEX `fk_renovacoes_exemplares_emprestimos_biblioteca_idx2` (`id_exemplar_emprestimo_biblioteca_vinculado`), CONSTRAINT `fk_renovacoes_exemplares_emprestimos_biblioteca_idx1` FOREIGN KEY (`id_exemplar_emprestimo_biblioteca`) REFERENCES `exemplares_emprestimos_biblioteca` (`id_exemplar_emprestimo_biblioteca`) ON UPDATE CASCADE ON DELETE CASCADE, CONSTRAINT `fk_renovacoes_exemplares_emprestimos_biblioteca_idx2` FOREIGN KEY (`id_exemplar_emprestimo_biblioteca_vinculado`) REFERENCES `exemplares_emprestimos_biblioteca` (`id_exemplar_emprestimo_biblioteca_vinculado`) ON UPDATE CASCADE ON DELETE CASCADE ) COLLATE='utf8_general_ci' ENGINE=InnoDB; CREATE TRIGGER TriggerExemplaresEmprestimosBibliotecaAI BEFORE INSERT ON exemplares_emprestimos_biblioteca FOR EACH ROW BEGIN IF (NEW.id_exemplar_emprestimo_biblioteca_vinculado IS NOT NULL) THEN CALL SPInsertRenovacaoExemplarEmprestimoBiblioteca(NEW.id_exemplar_emprestimo_biblioteca, NEW.id_exemplar_emprestimo_biblioteca_vinculado); END IF; END ; CREATE TRIGGER TriggerRenovacoesExemplaresEmprestimosBibliotecaAI AFTER INSERT ON renovacoes_exemplares_emprestimos_biblioteca FOR EACH ROW BEGIN CALL SPUpdateStatusExemplarEmprestimoBiblioteca(NEW.id_exemplar_emprestimo_biblioteca_vinculado, 'R'); END ;
×
×
  • Criar Novo...