Gatilho: como funciona a tabela inserida? Como acessar suas linhas?

tenho o seguinte quadro

Data --Table name
ID -- Identity column
PCode -- Postal Code

eu criei o seguinte gatilho:

CREATE TRIGGER Trig
ON Data
FOR INSERT
AS
BEGIN 

    Select * from inserted

END

e inseridos os seguintes valores

INSERT INTO Data VALUES (125)
INSERT INTO Data VALUES (126)
INSERT INTO Data VALUES (127)

mostra isto:

enter image description here

Mas estava à espera de algo assim:
  • após a primeira inserção, o gatilho é executado- > uma linha é apresentada na Tabela inserted.
  • após a segunda inserção, o gatilho é executado - > duas linhas são apresentadas na Tabela inserted.
  • Depois do 3º dia inserção, a activação é executada - > três linhas são apresentadas na Tabela inserted.

de acordo com msdn.microsoft todas as linhas inseridas estão nesta tabela.


Como posso aceder à tabela inserted para poder ver todas as linhas esperadas e não separadamente?

Author: TT., 2016-11-13

2 answers

Não podes. A partir do utilizar os quadros inseridos e suprimidos artigo sobre microsoft.com, você pode ler:

A tabela inserida guarda cópias das linhas afectadas durante as instruções de inserção e actualização.

Isso significa que a tabela inserted só conterá linhas para a actual Instrução INSERT ou UPDATE.

Se quiser ver todas as linhas para vários desses INSERT ou UPDATE, terá de guardar estas linhas numa tabela que criou se.

 1
Author: TT., 2016-11-13 17:13:50

Há 2 Tabela disponível num trigger, no inserido e no suprimido. Cada atualização na tabela XXX é na verdade uma linha de delete X De XXX, em seguida, uma inserção da linha X na tabela XXX. assim, a inserida dentro do gatilho é uma cópia do que foi inserido. Você pode fazer muito com um gatilho, mas gatilhos são perigosos.

Por exemplo, num espectáculo, encontrei um SP enorme a ser executado por um gatilho, largámo-lo e a base de dados voltou a estar online. Ou outro exemplo, se você faz um gatilho errado para auditar logins, você pode descer o servidor.
 0
Author: Duane Lawrence, 2016-11-13 17:08:08