Lucas.es 0 Denunciar post Postado Março 13, 2013 Pessoal eu tenho uma tabela contato que ela tem um ID que é autoincrement... se na tabela tem 10 contatos e eu apago 2 ele fica com 8 ok... mas ao adicionar um novo contato ele nao adiciona o novo com id = 9 e sim com id = 12.... eu queria saber como eu faço um update tipo assim: update contato set id = id -1 where id = (select max(id) from contato); tipo eu queria pegar o maior id existente no banco, e depois que eu adicionar um novo contato eu diminuir um desse valor... eu queria conseguir fazer esse update para depois fazer uma trigger para corrigir esse problema... Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Março 13, 2013 Qual seria a necessidade disso ?! :huh: Compartilhar este post Link para o post Compartilhar em outros sites
Lucas.es 0 Denunciar post Postado Março 13, 2013 Qual seria a necessidade disso ?! :huh: Corrigir a numeração do ID... se tem 10 pessoa e eu apagar 5 quando eu insiro uma nova pessoa ao banco de dados ele inseri com id 11 em vez de 6... eu queria corrigir esse erro no id... eu queria saber como eu faço o update corretamente.... pegando o maior numero de id no banco e colocando a nova inserção como id + 1 ... queria fazer uma trigger que faça essa correção. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Março 13, 2013 Não é necessário isso, o autoincrement utiliza desse mecanismo para que não aja problemas, e você não terá problema algum ao manipular esses dados.... Procure por SQL Admin... ele faz essa reorganização sem precisar de esforço. Compartilhar este post Link para o post Compartilhar em outros sites
Lucas.es 0 Denunciar post Postado Março 15, 2013 Alaerte Gabriel,eu não estou conseguindo usar o SQL Admin da forma que o meu programa dê certo...eu quero criar uma trigger para corrigir esse problema do ID, só que não estou conseguindo... seria algo parecido com isso: create trigger Tgr_updateId after insert on contato for each row begin declare valor int; select max(id) + 1 from contato into valor; update contato set id = valor; end ou seja eu queria declarar uma variavel dentro da trigger que recebesse o resultado do max(id) +1.para realizar o update do id com esse novo valor.com isso evitaria de quando eu deletar 2 usuarios de 10 no total, nao insira um novo id como 11, em vez de 9... tentei fazer assim também: create trigger Tgr_updateId after insert on contato for each row begin declare maxId int; set maxId = (select max(id) from contato); update contato set id = maxId +1; end mas ta dando erro: ERROR 1235 (42000): This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' Compartilhar este post Link para o post Compartilhar em outros sites
Jorge Seiki Teruya 15 Denunciar post Postado Março 21, 2013 O que você não é um erro na verdade. Pois na manipulação dos dados e com os relacionamentos das tabelas se os registros compartilharem o mesmo ID mesmo em espaços temporais diferentes, isso irá causar inconsistência no seu banco. Compartilhar este post Link para o post Compartilhar em outros sites