Abrace um programador
Posted: August 29th, 2008 | Author: PauloASilva | Filed under: blog, capítulos, programaçãoTags: programador, vida | 1 Comment »
Porque não eu? É que isto soa-me familiar!
Nota: Roubado, não dos umbrais mas do Ainda a Pensar.
Porque não eu? É que isto soa-me familiar!
Nota: Roubado, não dos umbrais mas do Ainda a Pensar.
Trigger, do inglês “gatilho”, é o nome dado a procedimentos armazenados numa base de dados e activados por eventos específicos numa tabela. No conhecido SGBD MySQL (agora da Sun) foram introduzidos na versão 5.0.2.
Toda a documentação relativa ao uso de Triggers poderá ser consultada no site do MySQL, devendo dedicar-se especial atenção à Secção D.1. “Restrictions on Stored Routines, Triggers, and Events” relativa às restrições a que estes estão sujeitos.
Estas linhas devem-se ao tempo que perdi ao tentar justificar o erro: “Not allowed to return a result set from a trigger“.
À semelhança dos procedimentos, qualquer operação de extracção de informação, entre outras (ver restrições), tem obrigatoriamente de ser feita para variáveis definidas pelo utilizador (incluo nestas a possibilidade de os dados serem enviados para ficheiro).
Estando agora consciente destas restrições deixo um exemplo para aqueles que depararem com esta limitação:
1 2 3 4 5 6 | CREATE TRIGGER teste AFTER INSERT ON tabela FOR EACH ROW BEGIN SET @newID; SELECT @newID:=NEW.id; END; |
Embora o valor de NEW.id seja armazenado na variável previamente definida, o resultado da execução do trigger será um set com o elemento @newID.
A fórmula de sucesso segue abaixo:
1 2 3 4 5 6 | CREATE TRIGGER teste AFTER INSERT ON tabela FOR EACH ROW BEGIN SET @newID; SELECT NEW.id INTO @newID; END; |