Seite 1 von 1

SQL Trigger und Qt Signal/Slot verheiraten?

Verfasst: 17. Februar 2009 18:06
von otternase
Hallo

gibt es einen Weg, Trigger aus einer Datenbank an einen Slot in Qt zu binden? Oder gibt es für folgende Aufgabenstellung eine andere bessere Lösung?

Wenn in der Postgresql Datenbank, mit der mein Programm verbunden ist, in einer bestimmten Tabelle ein bestimmtes Feld sich ändert, sei es durch eine Aktion meines Programms, aber auch durch eine externe Quelle, so soll in meinem Programm eine bestimmte Aktion angestossen werden. Optimalerweise soll dabei die geänderte Zeile (alte und neue Werte) mit übergeben werden.

Für Hinweise, speziell auch, unter welchen Stichworten ich suchen muss, wäre ich sehr dankbar!

Ciao
Markus

Verfasst: 17. Februar 2009 18:18
von Christian81
Soweit ich weiß kann die Qt-Sql-Schnittstelle nicht mit Triggern umgehen.

Verfasst: 17. Februar 2009 18:26
von otternase
Christian81 hat geschrieben:Soweit ich weiß kann die Qt-Sql-Schnittstelle nicht mit Triggern umgehen.
Das ist genau das Problem, ich suche jetzt nach Work-Arounds...

Wie sähe es zB. damit aus, einen Socket anzulegen, in den die Datenbank durch eine vom Trigger gestartetes C-Funktion hineinschreibt und auf den mein Programm hört?

Verfasst: 17. Februar 2009 18:31
von Christian81
Das ist sehr db-spezifisch - da kann ich nichts zu sagen. Falls es sowas gibt würde sich ein Listen-Thread anbieten der dann ein Signal emitiert wenn der Trigger zuschlägt.

Verfasst: 17. Februar 2009 19:09
von upsala
Zu finden unter QSqlDriver:

Code: Alles auswählen

bool subscribeToNotificationImplementation ( const QString & name ) 
QStringList subscribedToNotificationsImplementation () const 
bool unsubscribeFromNotificationImplementation ( const QString & name )
Die Kommandos der Datenbank dazu findest du in dessen Doku...

Verfasst: 18. Februar 2009 09:50
von otternase
upsala hat geschrieben:Zu finden unter QSqlDriver:

Code: Alles auswählen

bool subscribeToNotificationImplementation ( const QString & name ) 
QStringList subscribedToNotificationsImplementation () const 
bool unsubscribeFromNotificationImplementation ( const QString & name )
Die Kommandos der Datenbank dazu findest du in dessen Doku...
ganz hervorragend, das habe ich gesucht! da werde ich wohl mal auf Qt4.4 updaten müssen...