Se forem executados comandos SQL na função de gatilho, e estes comandos acessarem a tabela para a qual o gatilho se destina, então deve-se estar ciente das regras de visibilidade dos dados, porque estas determinam se estes comandos SQL enxergam as mudanças nos dados para os quais o gatilho foi disparado. Em resumo:
-
As modificações nos dados (inserção, atualização e exclusão) causadoras do disparo do gatilho, naturalmente não são enxergadas pelos comandos SQL executados em um gatilho no nível-de-linha que dispara antes, porque ainda não ocorreram.
-
Entretanto, os comandos SQL executados em um gatilho para antes enxergam os efeitos das modificações nos dados das linhas processadas anteriormente no mesmo comando externo. Isto requer cautela, uma vez que a ordem destes eventos de modificação geralmente não é previsível; um comando SQL que afeta várias linhas pode atuar sobre as linhas em qualquer ordem.
-
Quando um gatilho para depois é disparado, todas as mudanças nos dados feitas pelo comando externo estão completas, sendo enxergadas pelos comandos SQL.
Podem ser encontradas mais informações sobre as regras de visibilidade dos dados na
Seção 41.4
. O exemplo na
Seção 35.4
contém uma demonstração destas regras.