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?
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
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
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 .