2013-10-09 4 views
0

J'ai eu ce déclencheur fonctionne bien sur un autre serveur SQL/base de données .. Maintenant, il ne fait rien, toutes les conditions préalables que je dois configurer ou des idées pourquoi cela ne fonctionne pas .. SQL Server 2008sql déclencheur ne fonctionne pas/mise à jour table

create trigger Autoupdate6 -- Creating Trigger 
On NumericSamples 
For Insert 
As 
Insert Into BM1OILT 
Select SampleDateTime, SampleValue From NumericSamples 
Where TagID = 8 and UpdateC = 0 
UPDATE NumericSamples set UpdateC = 1 WHERE TagID = 8 
go 

Merci,

figured it out, le programme qui insérait dans la table a des insertions en vrac, là pour en passant les déclencheurs .. J'y suis allé avec un emploi au lieu de déclencheurs. Merci encore Aaron Bertrand d'avoir essayé de comprendre cela avec moi.

+0

Etes-vous sûr que cela devrait affecter les lignes? Par exemple. peut-être aucune ligne n'est insérée avec TagID = 8 ou UpdateC = 0. De toute façon votre déclencheur regarde la table entière - vous devriez restreindre vos requêtes aux lignes qui se trouvent dans la pseudo-table 'inserted'. –

+0

Il y a environ 1000 lignes qui répondent à ce critère. Cela a juste cliqué dans mon cerveau, je faisais un test d'insertion à une rangée sur l'autre table, maintenant il essaie de faire plusieurs rangées .. Est-ce que ça pourrait être le problème, comment je réécrirais ça .. –

+0

Avez-vous 5 autres déclencheurs cette table? –

Répondre

0

Cela empêchera le déclenchement de commencer à travailler sur la table entière:

CREATE TRIGGER dbo.Autoupdate6 
ON dbo.NumericSamples 
FOR INSERT 
AS 
BEGIN 
    INSERT INTO dbo.BM1OILT(...column names here please...) 
    SELECT SampleDateTime, SampleValue FROM inserted 
    WHERE TagID = 8 AND UpdateC = 0; 

    UPDATE n SET UpdateC = 1 
    FROM dbo.NumericSamples AS n 
    INNER JOIN inserted AS i 
    ON n.SampleDateTime = i.SampleDateTime 
    WHERE n.UpdateC = 0 AND n.TagID = 8; 
END 
GO 

Vous pourriez être en mesure de replier ce une déclaration en utilisant la clause OUTPUT, mais il y a tellement de limitations sur composable DML, Il s'agit généralement d'un effort inutile, sauf si nous savons déjà que votre environnement n'est soumis à aucune des restrictions.

+0

Que devrais-je mettre comme mon nom key_column? il y a une erreur là-bas. Merci encore pour votre aide. –

+0

@PatPav votre table possède-t-elle une clé primaire? Essayez ça. –

+0

J'ai ajouté une clé primaire à BM1OILT, les NumericSamples avaient déjà une clé primaire. J'ai essayé quelques variations différentes, mais toujours pas de chance. Y at-il un paramètre qui me manque sql? Je suppose que je vais essayer de me connecter à mon autre serveur sql ce soir, et voir si je peux effacer recréer la gâchette et voir si la gâchette fonctionne encore, peut-être que j'ai fait quelque chose avant que j'oublie de faire cette fois .. –

Questions connexes