Datenbank-Überwachung
Eine Automation starten, wenn eine SQL-Abfrage neue, geänderte oder entfernte Zeilen liefert.
Funktionsweise
Der Trigger führt in einem festen Intervall eine SELECT-Anweisung aus und vergleicht das Ergebnis mit dem zuletzt bekannten Stand. Neue Zeilen starten einen Lauf; mit einer Schlüsselspalte erkennt er auch geänderte Zeilen (einschließlich der geänderten Spalten) und auf Wunsch entfernte Zeilen.
Der erste Start merkt sich nur den aktuellen Stand – vorhandene Zeilen starten keine Läufe (außer Sie wünschen es). Der Stand bleibt über Neustarts erhalten: Änderungen, die passieren, während das AI Kit nicht läuft, werden beim nächsten Start gemeldet.
Die Überwachung liest nur. Alles andere als eine einzelne SELECT-Anweisung wird abgelehnt.
Einstellungen
| Feld | Was es steuert | Erforderlich | Hinweise |
|---|---|---|---|
| Datenbanktyp | „PostgreSQL“ (postgres), „MySQL / MariaDB“ (mysql), „Microsoft SQL Server“ (mssql) oder „SQLite (Datei auf dem Server oder libSQL-Adresse)“ (sqlite). | erforderlich | |
| Server / Port | Wo die Datenbank läuft. | erforderlich außer bei SQLite | Standard-Ports 5432 / 3306 / 1433. |
| Benutzer / Passwort | Anmeldung an der Datenbank. | je nach Datenbank | Das Passwort wird verschlüsselt gespeichert. |
| Datenbank | Name der Datenbank. | erforderlich | SQLite: absoluter Dateipfad auf dem Server oder eine libSQL-Adresse. |
| Verschlüsselte Verbindung (TLS) | Verbindung per TLS. | optional | Standardmäßig aus, bei SQL Server an. |
| Abfrage | Die SELECT-Anweisung, deren Ergebnis beobachtet wird. | erforderlich | |
| Schlüsselspalte | Spalte, die eine Zeile kennzeichnet, z. B. id. | optional | Nötig, um geänderte und entfernte Zeilen zu erkennen. Ohne sie werden nur neue Zeilen erkannt. |
| Neue Zeilen / Geänderte Zeilen / Entfernte Zeilen | Welche Änderungen Läufe starten. | optional | Neue und geänderte standardmäßig an, entfernte aus. |
| Läufe | per-run: „Ein Lauf mit allen Änderungen“ · per-row: „Ein Lauf je geänderter Zeile“. | optional | Standard per-run. |
| Vorhandene Zeilen beim ersten Start als neu melden | Beim ersten Start einmal das ganze Ergebnis melden. | optional | Standardmäßig aus. |
| Abfrageintervall (ms) | Wie oft die Abfrage läuft. | optional | Standard: 60.000 (einmal pro Minute), mindestens 5.000. |
| Max. Zeilen der Abfrage | Obergrenze für das Ergebnis. | optional | Standard: 10.000. Ein größeres Ergebnis wird nicht verglichen – die Überwachung meldet einen Fehler, statt den Rest als entfernt zu behandeln. |
| Max. Änderungen je Prüfung | Obergrenze je Lauf. | optional | Standard: 500; der Rest folgt bei der nächsten Prüfung. |
| Ergebnis (Zeilen) | Ausgabe in den Speicher mit den neuen und geänderten Zeilen. | erforderlich | Eine Liste (per-row: die eine Zeile). |
| Änderungen (Details) | Ausgabe in den Speicher mit den Details. | optional | { count, added, changed, removed, changes: [{ changeType, key, row, previous, changedFields }] } |
📷 SCREENSHOT: Die Einstellungen der Datenbank-Überwachung mit Verbindung, Abfrage und Schlüsselspalte.
Beispielszenario
Auf bezahlte Bestellungen reagieren. Überwachen Sie SELECT id, customer, status, total FROM orders WHERE created_at > CURRENT_DATE - 30 mit der Schlüsselspalte id. Wechselt der Status einer Bestellung auf paid, erh ält der Lauf die Bestellung unter Ergebnis (Zeilen) und die geänderte Spalte unter Änderungen (Details); eine Bedingung am nächsten Schritt prüft auf paid, eine KI-Aktion entwirft die Rechnungs-E-Mail und „E-Mail senden“ verschickt sie.
Empfehlungen
- ✅ Verwenden Sie eine Schlüsselspalte, wann immer die Tabelle eine hat – sonst bleiben Änderungen unsichtbar.
- ✅ Halten Sie das Ergebnis mit einem Zeitfilter klein (z. B. die letzten 30 Tage). Bei jeder Prüfung wird das ganze Ergebnis verglichen.
- ✅ Verwenden Sie für diese Verbindung einen eigenen Benutzer mit reinen Leserechten.
- ✅ Beginnen Sie mit einem längeren Abfrageintervall (z. B. 5 Minuten) und verkürzen Sie es nur, wenn Sie schneller reagieren müssen.
- ❌ Wählen Sie keine Spalten aus, die sich bei jedem Lesen ändern (z. B.
NOW()) – sonst gilt jede Zeile als geändert.
Nächste Schritte
- Daten innerhalb des Workflows lesen oder schreiben: Datenbankabfrage.
- Für exportierte Dateien statt einer Datenbank: Datensätze geändert.