MYSQL: Alter table – de Float para Decimal com 2 casas – Problema com PagSeguro

9 01 2011

Primeiro post sobre desenvolvimento do ano de 2011!

Surgiu a seguinte questão de um cliente: Na tabela produtos o campo ‘valor’ estava como float. Porém isso causava um grande problema. Quando o cliente ia realizar a compra através do PagSeguro, o valor 6.4 (Seis reais e quarenta centavos) ia através do pag seguro sem virgula (64) e então o pagSeguro convertia automaticamente para a seguinte forma 0,64! Ou seja, um produto que custava 6 reais passou a custar 64 centavos! :-| Tenso né?! Pois é.

Nota-se que os produtos que possuem o valor: 5.44 o pagSeguro convertia corretamente, ou seja, ele tirava a virgula, ficando 544, e depois incluía a virgula após as 2 primeiras casas, ficand 5,44. Desta forma podemos identificar que os produtos que tinham apenas 1 casa decimal depois da virgula eram os que causavam o problema.

Vamos à solução! :)

Estudando os tipos de campo, achamos que é perfeitamente viável utilizar o tipo DECIMAL. Assim, montamos o seguinte comando SQL:

ALTER TABLE produtos MODIFY valor DECIMAL(5,2)

Explicando o código: Altere a tabela produtos, modificando o campo valor para o tipo decimal, onde este decimal tem no máximo 5 dígitos (99.999), neste caso temos produtos de no máximo 100 mil reais. E que o valor decimal sempre fique com 2 casas decimais após a vírgula.

Boa Semana!





Como inserir CONSTRAINT depois que a tabela já existe? Alter table!

17 12 2010

Essa semana surgiu a seguinte necessidade:

Foram criadas tabelas sem constraints! E agora chegou a hora de corrigir este problema! Como?

Imagine uma tabela endereco, onde esta tabela tem ligação com a tabela usuario. Ou seja, se o usuário que está na tabela tiver um endereço cadastrado na tabela endereco, ele não pode ser deletado. Primeiro devemos deletar o registro da tabela endereco!

Segue o exemplo!

ALTER TABLE endereco 
ADD CONSTRAINT FK_endereco_id_usuario
FOREIGN    KEY (id_usuario)
REFERENCES usuario(id)

Explicação:
1 – Tabela a ser alterada
2 – Ação à ser executada: Adicionar Constraint com o nome de FK_endereco_id_usuario
3 – Chave estrangeira desta tabela
4 – Tabela pai e o campo de ligação

Bom final de semana!








Seguir

Obtenha todo post novo entregue na sua caixa de entrada.