update sem afetar o timestamp

Enviada por Gustavo 
Gustavo
update sem afetar o timestamp
22 de January de 2005 às 10:34AM
em uma tabela tenho um campo timestamp que é preenchido automaticamente pelo mysql quando faço um insert. Uso esse campo para guardar a data de cadastro do registro.

Até ai tudo bem, o problema é que quando faço um update nesse registro, o valor desse campo timestamp é atualizado para a data atual. Como quero guardar a data de cadastro não posso alterar esse valor no update, ele deve ser inserido no insert e nunca mais ser alterado.

Alguém pode me informar o que colocar na query para que o update não afete esse campo?
Diógenes Sobral
Re: update sem afetar o timestamp
24 de January de 2005 às 10:04AM
Como este campo é alimentado?
Provavelmente você pega a data atual em formato timestamp e da um insert em seu BD, certo?
Se for isso basta que em seu script de update não dê o insert para este campo. Assim ele permanecerá inalterado.

Caso eu não tenha compreendido corretamente o problema, me poste os trechos do código onde você faz a inserção inicial e onde faz seu update, para que eu possa analizar melhor
Gustavo
Re: update sem afetar o timestamp
29 de January de 2005 às 03:57AM
eu não pego data. Quando eu crio a tabela no mysql eu crio um campo tipo "dataCadastro" e coloco o tipo dele como timestamp(14) e só. Em todo insert que eu faço o mysql coloca a data atual sem que eu referencie esse campo na query, com a função now() (nativa do mysql). Dessa forma quando eu dou um insert eu tenho a data atual que fica sendo a data de cadastro, até ai tudo ok! Quando eu preciso fazer um update nesse registro, o mysql usa novamente a função now() nesse campo timestamp e atualiza o campo com a data atual sobrepondo a data anterior.

O que eu preciso saber é como montar uma query que faça o meu update mas que informe ao mysql que ele não deve usar a função now() e atualizar o meu campo timestamp. Por exemplo, se eu tiver uma tabela que tenha um campo chamado "id" e esse campo for do tipo int, chave primária e auto_increment eu posso fazer isso sem nenhum problema:

insert into tabela (id,nome) values ('','teste');

eu posso ocultar o campo id porque ele é auto_increment, logo não preciso me preocupar com o seu valor pois o seu valor será o valor anterior + 1, porém se eu quiser especificá-lo explicitamente eu posso.

Eu tentei fazer isso mas ai o mysql sobrepõe o valor atual por '00000000000000'

update tabela set (nome,dataCadastro) values ('teste','') where id = 'x';

agradeço a atenção.
Eduardo
Re: update sem afetar o timestamp
14 de January de 2016 às 12:36PM
Após criar a tabela com o campo data, execute o seguinte codigo SQL:

ALTER TABLE `nome_do_banco`.´nome_da_tabela´ CHANGE COLUMN `data`
`data´TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;
Você precisa estar logado no PHPBrasil.com para poder enviar mensagens para os nossos fóruns.

Faça o login aqui.