-- Exemplos de Gatilhos. -- Esta série de arquivos demonstra o desenvolvimento de gatilhos. -- Desde a fase de percepção do problema, passando pelo desenolvimento do algoritmo e -- implementação em PL/PGSQL do PostgreSQL. -- -- -------------------------------------------------------------------------------------------------------------------- -- Desenvolva um gatilho que apresente o novo valor de uma -- chave primária a cada linha inserida para a tabela autores. -- Tabela: autores -- Evento: INSERT -- Quando: Antes do INSERT -- -- Nome da função de gatilho: autoresBI -- Nome do Gatilho: BIautores -- -- Algoritmo: -- ? Qual operação da AR (SQL) deve ser executada para apresentar -- o próximo valor de PKAUTOR a ser inserido na tabela? -- Projeção: autores[[ MAX(pkautor)+10 -> vmax -- SQL: SELECT MAX(pkautor)+10 from autores; -- a função MAX() pode retornar NULL se a tabela estiver vazia. -- Então se o resultado da projeção for armazenado em variavel, -- deve-se verificar se o valor retornado é NULL. -- -- SE SIM então o valor a ser atribuído na pkautor deve ser 10. -- SENÃO o valor da pk deve ser o que está armazendo na variável. -- -- O Algoritmo vmax smallint; inicio vmax=valor máximo(pkautor de autores)+10; se vmax é nulo então{ new.pkautor=10; } senão{ new.pkautor=vmax; } fim-do-se retorne nova-linha; fim -- Este algoritmo está bem próximo da linguagem pl/pgsql. Como deve ser. -- -- Escreva o Gatilho em PostgreSQL (lembre-se: Trigger Function + Trigger.