Criar a activação no servidor SQL

perdi-me quando queria criar o trigger usando o "CREATE TRIGGER" pré-definido do SQL Server 2008 R2. Pode, por favor, dar-me uma declaração SQL directa que eu possa usar para criar um gatilho, e dizer-me como definir depois, antes, e tudo isso?

também, Como posso saber as linhas atualizadas / inseridas / apagadas, e usar os seus valores de coluna para fazer operações dentro do gatilho?

Author: Marta, 2010-07-29

3 answers

As bases de dados são orientadas para o conjunto e os gatilhos não são diferentes. Um gatilho dispara quando uma dada operação é realizada e essa operação pode afetar várias linhas. Assim, a questão "Say I want to know the Primary Key of that row" é um equívoco. Pode haver várias linhas inseridas.

O servidor SQL fornece duas tabelas especiais para os gatilhos chamados inserted e deleted que representam as linhas que foram inseridas ou apagadas por uma acção e estão estruturadas de forma idêntica à tabela que está a ser afectada. Um dispositivo de actualização poderá povoar tanto inserted como deleted, enquanto que um dispositivo de inserção só iria povoar a tabela inserted.

Das observações:

Mas o destinatário do E-mail será decidido com base num valor numa segunda tabela, onde o ID da chave estrangeira está localizado na primeira tabela (que é a que tem o trigger

A resposta a esta pergunta é usar a tabela inserted (que, mais uma vez, você deve assumir que pode ter várias linhas) para circular através das linhas e enviar um e-mail. No entanto, eu gostaria recomendo contra colocar a lógica de E-mail em um gatilho. Em vez disso, eu recomendaria colocar essa lógica em um procedimento armazenado e enviar seu e-mail a partir disso.

Para referência: criar Trigger

 3
Author: Thomas, 2010-07-29 02:44:38

A sintaxe básica é

CREATE TRIGGER YourTriggerName ON dbo.YourTable
FOR|AFTER INSERT, UPDATE, DELETE
AS
BEGIN
     /*Put what ever you want here*/
     UPDATE AnotherTable
          SET SomeColumn = AnotherColumn
     FROM inserted | deleted
END
GO
 11
Author: mrdenny, 2010-07-29 02:32:27

Um gatilho é um processo baseado em eventos que é "despoletado" depois de uma tabela ser alterada de alguma forma. Isto será no DELETE, UPDATE, INSERT, e assim por diante. A sua sintaxe anterior e posterior irá definir se deve executar o gatilho antes ou depois do evento ser cometido.

Essa é a versão curta. Confira MSDN .
 2
Author: , 2010-07-29 02:07:30