2017-03-26 2 views
1

Gibt es eine Möglichkeit, ein Ereignis auszulösen, wenn andere Benutzer im Netzwerk einen Datensatz aktualisieren oder in die SQL-Tabelle einfügen?Gibt es eine Möglichkeit, ein Ereignis auszulösen, wenn andere Benutzer auf eine Tabelle aktualisieren?

Ich konnte die Tabelle alle paar Sekunden aus der Datenbank lesen und dann die Daten vergleichen, um festzustellen, ob es Unterschiede gibt, aber das würde ressourcenintensiv erscheinen.

Vielleicht hätte ich erwähnen sollen, dass ich C#/WinForm und SQL-Datenbank verwende, obwohl ich es markiert habe.


Ich habe schon bei SQL-Trigger gesucht, aber es erfordert nicht auch die Trigger-Tabelle zu lesen, die ressourcenintensiv werden kann? Ich sah mehr von kleinem Programm/Dienst, der im Hintergrund läuft, dass, wenn Benutzer Änderungen an der Datenbank vornimmt, sie auslöst. Die Vordergrund-App kann dann den Dienst überprüfen, um festzustellen, ob eine Änderung vorgenommen wurde. Denke ich übermäßig kompliziert nach?

+1

10 Ja, Sie können Auslöser für Tabellen erstellen. Sie können die akzeptierte Antwort auf diese Frage überprüfen: http://stackoverflow.com/questions/741414/insert-update-trigger-how-to-determine-if-insert-or-update – mako

+0

Was möchten Sie in der tun Trigger .. einfach die Änderungen überprüfen und protokollieren oder die Änderungen verhindern? – Aamir

+0

@mako, der Link ist für VB, und es ist auch ähnlich im Konzept, wie ich in meiner Frage angegeben habe, die ich vermeiden möchte. – itchibahn

Antwort

1

Wenn die durchzuführende Verarbeitung vollständig in SQL (oder in anderen Sprachen, aber innerhalb der Datenbank) geschrieben werden kann, können Sie eine trigger verwenden.

Triggercode wird in der Datenbank beim Einfügen/Aktualisieren/Löschen von Daten ausgeführt. Was genau gemacht werden kann und welche Sprache verwendet werden kann, hängt von der spezifischen Datenbank ab, aber die meisten Datenbanken unterstützen den Begriff der Auslöser.

1

Es ist überflüssig, eine Verbindung mit dem Server zu öffnen und alle paar Sekunden zu lesen. Außerdem haben Sie einen wahnsinnigen Verkehr, wenn Sie mehrere Benutzer haben, die alle paar Sekunden versuchen werden, mit Ihrer db zu verbinden ...

Wie 6502 sagte, Trigger sind der Weg zu gehen. Es gibt eine nette kleine article in msdn.

0

Nach dem Lesen von SqlDependency und Trigger, scheinen beide auf die periodische Abfrage der Datenbank angewiesen zu sein. Ich denke, das kann schließlich die Leistung hämmern. Also habe ich beschlossen, Code in Windows Services zu studieren. Ich hoffe, Windows-Dienst schreiben, dass ich Informationen über gerade gespeicherte Datensätze speichern kann. Und dann kann ich abfragen, welche Tabelle ich neu laden muss. Ich hoffe, ich bin nicht über komplizierte Dinge ....

Danke, +1 alle für Ihre Antworten.

Verwandte Themen