woombo design e comunicação

MySQL Triggers

23.06.2010 by Tiago 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 by Tiago 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

Até aonde devemos ser “Semânticos” ?!

19.02.2006 by Tiago Acompanhe

Bom, estava comentado um post no site do Henrique Costa Pereira e me empolguei em colocar a minha opinião tanto no post como aqui.

Acredito que o Henrique foi totalmente feliz ao colocar no título de seu artigo “querelas morais”. Mesmo depois de vivermos durante décadas sobre repressão moral e política, e ter desaprovado tal situação, insistimos em criar fatos e situações nas quais nos prostramos diante e insistimos em nos manter “ignorantes” até que tudo termine.

Deixarei aqui uma opinião minha, onde muitos concordarão com ela e muitos outros não, inclusive irei transcrever exatamente o que postei no site do Henrique.

Acredito que antes de pensarmos em seguir ou não padrões na web, devemos antes, nos preocupar em sermos os mais profissionais possíveis e cumprirmos nossos prazos.

Acredito que antes do cliente querer ter um código limpo etc e tal, ele quer que o prazo seja cumprimo. Sou um arduoso defensor da semântica, mais acredito que aplicá-la 100% em tudo que fazemos hoje em dia seja meio utópico.

Existem dezenas de servidores, brownsers, sistemas operacionais, etc… todos tentando converger para uma “única lei” ou melhor, padrão.

Enquanto isso não acontece, essa unicidade dos meios, creio que devemos continuar a estudar as melhores práticas e técnicas e aplicá-las quando possíveis, e quando não for possível aplicá-las creio que não devemos ter medo ou vergonha de usarmos artifícios não semânticos.

Até porque se vocês olharem o código fonte desse humilde site, verão algumas dezenas de coisas nenhum pouco semânticas.

Inclusive nos erros de português, que peço humildemente que me corrijam toda a vez que for necessário e peço desculpas pelas minhas atrocidades ao nosso português.

[]’s

Seja bem vindo ao meu novo portfólio online.

28.12.2005 by Tiago Acompanhe

Salve, Salve…

Seja bem vindo ao meu novo portfólio online.

Logo de início ja me desculpo, pois ainda preciso terminar de desenvolver todo o site, mais não esquente a cabeça, assim que possível ele estará finalizado… pelo menos espero.

Agradeço sua visita e peço que você retorne o quanto antes para poder ver o meu portfólio totalmente finalizado.

Valeu !!!

[]’s

Obs. Deixa um recado aiii….o dedo não cai não…

feito com wordpress | alguns direitos reservados | 2005/2024