-
Total de itens
3.089 -
Registro em
-
Última visita
Posts postados por Denis Courcy
-
-
Basicamente é isso aqui:
TRIGGER `tguDelete` AFTER DELETE ON `locacoes` FOR EACH ROW BEGIN DECLARE qtd SMALLINT UNSIGNED DEFAULT 0; SET qtd = (SELECT COUNT(id_locacao) FROM locacoes WHERE codigo_filme = OLD.codigo_filme); IF qtd = 1 THEN UPDATE filmes SET situacao = 'Disponivel' WHERE id_locacao = OLD.id_locacao; END IF; END;
-
Na linha 1 remova o ponto e virgula;
Na linha 6 coloque virgula após auto_increment.
-
Movendo para PHP
-
faça backup antes de fazer qualquer alteração. Não nos responsabilizamos por erros em seus dados.
A instrução abaixo deverá resolver seu problema:
update problemas p inner join prob_tipo_0 t on p. problema =t. probt0_desc SET p.problema = t. probt0_cod
-
Crie uma coluna saldo e atualize esta coluna com um trigger. Assim, a cada lançamento o sistema terá, automaticamente, o saldo atualizado.
-
O símbolo % deve ser representado por \%
-
Você já verificou a integridade das tabelas com o phpadmin ou outro sgbd para mysql?
-
Verifique se a tabela empresas possui indices para os campos id e razão (um índice para cada campo)
tabela clientes_old possui indices para campos id_emp,opcao,ano,mes,dia (um indice para todos estes campos)
Se a tabela clientes_old for muito grande, verifique, também, se há indice para o campo nome
tabela clientes_old possui indices para campos id_emp,setor,exame_clinico,opcao,ano,mes,dia (um indice para todos estes campos)
tabela empresas_setores id,setor,funcao (um indice para todos estes campos)Rode cada um dos selects, dentro do phpadmin ou outro sgbd, com a palavra EXPLAIN antes da palavra SELECT e poste o resultado se as ações acima não melhorarem o tempo de execução de seu relatório.
-
Boa tarde Ricardo,
Não há relacionamentos explícitos quando engine é MyISAM.
O engine utilizado para manter integridade referencial é o InnoDB.
O banco information_schema é virtual, e proprietário do MySQL. É montado quando do start do MySQL.
As informações de relacionamentos de todos os bancos de seu MySQL estão na tabela TABLE_CONSTRAINTS do banco information_schema.
-
Bom dia, Lailaaguiar
18 horas atrás, lailaaguiar disse:onde a chave primaria não pode ser igual para isso estou agrupando pela chave primaria, mas não estou conseguindo
Não entendi esta parte de seu questionamento. Poderia explicar melhor, por favor?
A que tabela pertence o campo lavtotalfun?
-
-
Faça assim:
SELECT ip, COUNT(DISTINCT porta) from nomeDaMinhaTabela GROUP BY ip HAVING COUNT(DISTINCT porta) > 1
-
Acrescente mais um comando que eu esqueci de colocar.
Após a linha do END WHILE;Coloque CLOSE cur1; para fechar o cursor. -
Desculpe, é END WHILE.
-
Basicamente é isso:
DELIMITER $$ CREATE PROCEDURE `nomedobanco`.`ATUALIZA_ESTOQUE_ENTRADA`(IN RCODENTRADA INTEGER) BEGIN DECLARE VCODENTRADA INTEGER; DECLARE VCODOBRA INTEGER; DECLARE VCODPROD INTEGER; DECLARE VQTDE FLOAT; DECLARE VVRUNITARIO NUMERIC(15,2); DECLARE VCODCLIENTE INTEGER; DECLARE VSTATUS VARCHAR(20); DECLARE VTIPO CHAR(1); DECLARE done INT DEFAULT FALSE; DECLARE cur1 CURSOR FOR SELECT I.codentrada, I.codobra, I.codproduto, I.quantidade, I.vrunitario FROM ITENSENTRADA I WHERE I.codentrada = RCODENTRADA; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur1; FETCH cur1 INTO VCODENTRADA, VCODOBRA, VCODPROD, VQTDE, VVRUNITARIO; WHILE NOT done DO SET vtipo = 'E'; SELECT E.codcliente, e.status INTO vcodcliente, vstatus FROM ENTRADA e WHERE E.codentrada = rcodentrada; IF NOT (vstatus = 'ABERTA' OR vstatus = 'FINALIZADA') THEN UPDATE entrada e SET e.status = 'FINALIZADA' WHERE E.codentrada = rcodentrada; UPDATE PRODUTO P SET P.estoque = P.estoque + vqtde, P.vrunitario = vvrunitario WHERE P.codproduto = vcodprod; INSERT INTO HISTORICOCLIENTES(CODMOV, CODCLIENTE, CODPRODUTO, QTDE, CODOBRA, TIPO) VALUES (vcodentrada, vcodcliente, vcodprod, vqtde, vcodobra, vtipo); INSERT INTO HISTORICOPRODUTO (CODMOV, CODOBRA, CODCLIENTE, CODPROD, QTDE, VALOR, TIPO) VALUES (vcodentrada, vcodobra, vcodcliente, vcodprod, vqtde, vvrunitario, vtipo); END IF; FETCH cur1 INTO VCODENTRADA, VCODOBRA, VCODPROD, VQTDE, VVRUNITARIO; END DO; END$$
-
Entre como root
e insira seu usuário na tabela user do banco mysql
-
Faça assim:
DELETE FROM nf_detalhe WHERE nf_detalhe.nfd_nfm IN (SELECT DISTINCT nf_mestre.id FROM nf_medtre WHERE nfm_dom = 35);
-
Sim. Use o programa Mysqldump que vem na instalação do Mysql. Leia a documentação para mais detalhes e poste aqui suas dúvidas.
-
O uso de um relacionamento muitos para muitos com barco e balsa resolve este problema.
Crie uma tabela barcoxbalsa (idBarco,idBalsa) e coloque aqui a composição que você está selecionando e você coseguirá listar usando inner join entre esta tabela e as tabelas barco e balsa.
-
4 horas atrás, Fabricio_wm disse:
Eu fiz isso e no de insert deu erro 1064 e 1193.
Unknown system variable cpfMostra a estrutura da tabela interditado
4 horas atrás, Fabricio_wm disse:Eu esqueci de mencionar que a outra trigger para descriptografar é para exibir.
Deu o mesmo erro.Neste caso não é trigger. É select.
-
Faça assim:
CREATE TRIGGER Crypt_Decrypt before insert on interditado FOR EACH ROW begin SET NEW.nome := aes_encrypt(NEW.nome, 'MIICeQIBADANBgkqhkiG9w0BAQEFAASC'); SET NEW.cpf := aes_encrypt(NEW.cpf, 'MIICeQIBADANBgkqhkiG9w0BAQEFAASC'); SET NEW.nome_pai := aes_encrypt(NEW.nome_pai, 'MIICeQIBADANBgkqhkiG9w0BAQEFAASC'); SET NEW.nome_mae := aes_encrypt(NEW.nome_mae, 'MIICeQIBADANBgkqhkiG9w0BAQEFAASC'); end;
Crie outro trigger para before update, igual a este.
-
O trigger de insert não tem valores antigos (OLD)
O trigger de delete não tem valores novos (NEW)
O que você precisa é de um trigger que ocorra antes de um update. (before update) Onde voce poderá comparar valores novos e antigos.
Deverá ser BEFORE pois a comparação deve ocorrer antes da gravação. Depois disso não haverá valores NEW.
DELIMITER $$ CREATE TRIGGER `nomedobanco`.`meutriggerdeupdate` BEFORE UPDATE ON `meubanco`.`minhatabela` FOR EACH ROW BEGIN IF NEW.natureza <> OLD.natureza THEN grave aqui END IF; END$$ DELIMITER ;
-
Tab_Comentario deverá ter uma chave estrangeira para tab_Filme.
Estude sobre relacionamento "um para muitos" e você verá que é fácil manter somente duas abelas para esta finalidade.
-
Se o campo a ser importado é uma string contendo o valor de 3,20, por exemplo. Então você pode usar a função REPLACE para trocar a vírgula por ponto e gravar em seu campo numérico tipo DECIMAL ou DOUBLE.
Leia o manual do MySQL da versão do seu banco de dados para saber como usar a função REPLACE.
Parametros em uma Views
em MySQL
Postado
Crie uma procedure e passe os parâmetros necessários.
DELIMITER $$ USE `meuBancoDeDados`$$ DROP PROCEDURE IF EXISTS `minhaProcedure`$$ CREATE PROCEDURE `minhaProcedure`(IN DataEmissao DATE) BEGIN SELECT DATA_EMIS, NRNF, TOTAL_VENDA FROM nf WHERE DATA_EMIS = DataEmissao; END$$ DELIMITER ;