SQL Server 2005 gatilho - como determinar com segurança se despedido pelo UPDATE ou DELETE?

votos
0

Eu tenho o seguinte código em um disparador SQL Server 2005:

CREATE TRIGGER [MyTrigger] ON [myTable]
FOR UPDATE, DELETE
COMO
INÍCIO

DECLARE @OperationType VARCHAR (6)
SE EXISTE (SELECT 1 DE INSERÇÃO IGNORO ED)
INÍCIO
    SET @ OperationType = 'Update'
FIM
OUTRO
INÍCIO
    SET @ OperationType = 'Excluir'
FIM

A minha pergunta: existe uma situação em que @OperationType não está preenchido corretamente? EG: os dados na tabela é alterado por um bando de atualizar as declarações / DELETE, mas o gatilho não é acionado uma vez por cada um deles?

Você tem uma melhor maneira de determinar se o gatilho foi disparado por um UPDATE ou DELETE?

Publicado 09/12/2008 em 16:53
fonte usuário
Em outras línguas...                            


2 respostas

votos
4

Por que você não apenas criar dois gatilhos separados?

CREATE TRIGGER [myUpdateTrigger] ON [myTable]
FOR UPDATE
AS
BEGIN

END

CREATE TRIGGER [myDeleteTrigger] ON [myTable]
FOR DELETE
AS
BEGIN

END
Respondeu 09/12/2008 em 17:00
fonte usuário

votos
3

A resposta é simples: Não, não vai haver uma situação em que o gatilho não consegue detectar corretamente (exceto quando não há linhas alteradas).

O gatilho será acionado uma vez para cada declaração, assim que a coisa não é possível e ele irá funcionar corretamente, mas o ponto é, se você realmente quer fazer tarefas diferentes para UPDATEe DELETE, é melhor usar um gatilhos casal.

Respondeu 09/12/2008 em 17:02
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more