woombo design e comunicação

[ Posts marcados como » ‘eu não sabia!’ ]

MySQL Triggers

23.06.2010 Acompanhe

MySQL

Oque é um trigger ?

Trigger é uma palavra da lingua inglesa que quer dizer “gatilho”, com isso, queremos dizer que a ação “gatilho” é usada para “disparar” eventos em sequencia, no nosso caso uma sequencia de eventos em nossa base de dados, no MySQL.

Como usar o trigger ?

O trigger é uma regra, e basicamente diz que, sempre que você executa uma ação em sua base de dados, seja esse comando para remover (DELETE), atualizar (UPDATE) ou inserir (INSERT), seu banco de dados deve executar uma tarefa vinculada a primeira. Por exemplo, supondo que seu sistema crie um registro (log) de cada ação que é executada pelo seu sistema, então devem ocorer duas ações para que você obtenha sucesso, sendo elas:

  1. Solicitação inicial
  2. Criação do log

Se realizarmos essa operação do modo convencional, devemos executar duas querys, a primeira onde você irá executar a ação solicitada pelo sistema e a segunda onde o item log é criado.

[php]mysql_query("UPDATE `tabela` SET produto = ‘informacao’ WHERE id = ‘id’");
mysql_query("INSERT INTO `log` ( id, date) VALUES ( mysql_insert_id(), now())")[/php]

Com isso, foram executadas duas interações entre seu código e o banco de dados para se obter o resultado esperado, já se utilizarmos um trigger, iremos executar somente uma requisição, porém, devemos criar a instrução que irá gerar a série de eventos:
[php] CREATE TRIGGER `databaseName`.`apos_atualizar_conteudo`
BEFORE UPDATE ON `tabela` FOR EACH ROW
BEGIN
INSERT INTO `log` ( id, date) VALUES ( NEW.id, now());
END[/php]
E só então executamos a query que irá dar inicio aos eventos.
[php]mysql_query("UPDATE tabela SET produto = ‘informacao’ WHERE id = ‘id’");[/php]
Dessa forma é adiciona uma pequena sobrecarga para a consulta inicial, porém, como estamos executando uma única query para fazer duas coisas distintas, há um ganho de desempenho global (pelo menos em teoria).

Vantagens da utilização do trigger

  • O trigger fornece uma forma alternativa para verificar a integridade da sua base de dados.
  • O trigger pode pegar os erros de lógica de negócio no nível de banco de dados.
  • O trigger fornece uma forma alternativa de executar tarefas agendadas. Com trigger, você não tem que esperar para executar as tarefas agendadas. Você pode lidar com as tarefas antes ou após as alterações feitas para tabelas de banco de dados.
  • O trigger é muito útil quando você usá-lo para auditar as alterações de dados em uma tabela do banco de dados.

Desvantagens do uso do trigger

  • O trigger pode apenas fornecer validação estendida e não pode substituir todas as validações. Algumas validações simples pode ser feito em nível de aplicativo. Por exemplo, você pode validar verificar a entrada no lado cliente usando JavaScript ou no lado do servidor pelo script de servidor utilizando PHP ou ASP.NET.
  • Triggers SQL executa invisível da aplicação cliente que se conecta ao servidor de banco de dados assim que é difícil descobrir o que aconteceu camada de banco de dados subjacente.
  • O trigger executa todas as atualizações feitas na tabela, portanto, ele adiciona a carga de trabalho para o banco de dados e sistema de causa corre mais devagar.

MySQL: CHAR vs VARCHAR

27.05.2010 Acompanhe

MySQL

Acredito que muitos usem e poucos saibam o porque estão usando determinados string types no momento que estão criando seus campos em seu banco de dados relacional.

Pelo menos isso já aconteceu diversas vezes comigo e toda vez opto pelo que considero ser o melhor mesmo não tendo a menor idéia de qual realmente é o melhor, bom, depois de me deparar com uma situação vergonhosa, onde uma pessoa me perguntou qual a diferença entre os campos, decidi finalmente ir atrás e estudar, o resultado dessa pesquisa segue abaixo:

String Types CHAR e VARCHAR

Os tipos CHAR e VARCHAR são parecidos, mas diferem na maneira como eles são armazenados e recuperados. São declaradas com um comprimento que indica o número máximo de caracteres que você deseja armazenar. Por exemplo, CHAR (30) pode conter até 30 caracteres.

O comprimento de uma coluna CHAR é fixado para o comprimento que você declare, quando você cria a tabela. O comprimento pode ser qualquer valor de 0 a 255. Quando valores CHAR são armazenados, eles são preenchidos a direita com espaços até o comprimento especificado. Quando valores CHAR são recuperados, espaços extras são removidos.

Em contraste com o CHAR, valores VARCHAR são armazenados como um byte ou dois bytes de prefixo de comprimento, mais os dados. O comprimento do prefixo indica o número de bytes do valor. A coluna usa um byte de comprimento se os valores não requerem mais do que 255 bytes, dois bytes de comprimento, se os valores podem exigir mais de 255 bytes.

Qual é o melhor mesmo ?

Se você possui um sistema pequeno, com certeza não vai fazer diferença o string type que você selecionar, porém, se há a expectativa de que seu sistema cresça e chegue ao ponto em que cada byte é válido, então, eu teria como base 2 premissas:

  • Primeira -Conhecendo o tamanho do meu conteúdo e sabendo que ele não irá sofrer alterações bruscas, eu optaria pelo CHAR;
  • Segundo -Sabendo que o meu campo possui uma variação de tamanho de acordo com cada dado que é inserido na tabela, eu utilizaria o VARCAR.

Se realmente minha idéia está correta, eu não sei, mais pelo menos foi o que eu entendi.

[]’s

Fonte: MySQL

feito com wordpress | alguns direitos reservados | 2005/2024