Hallo,
ich habe folgendes Problem. In meinem Programm wird eine Firebird Datenbank verwendet, auf die mit Hilfe des Ibase Plugins zugegriffen wird. Das funktioniert auch wunderbar.
Problematisch wird es bei Updates, wenn die DB Struktur angepasst werden muss. Dazu verwende ich QSqlQuery und kann damit z.B. neu Tabellen anlegen oder löschen.
Beim Versuch einen neuen Datenbanktrigger anzulegen, der mir einen Index in einer Tabelle erzeugt bin ich bis jetzt gescheitert. Übergebe ich den SQL Code mit einem anderen Programm (FlameRobin) funktioniert er. Mit QSqlQuery leider nicht.
SET TERM ^ ;
CREATE TRIGGER CREATE_USERSETTINGS_ID FOR USERSETTINGS ACTIVE
BEFORE INSERT POSITION 0
AS BEGIN NEW.id = GEN_ID(USERSETTINGSID, 1); END^
SET TERM ; ^
Ich bin mir im Klaren, dass das eigentlich keine Qt Frage ist, aber ich gehe davon aus, dass es nichts mit dem SQL Code zu tun hat, weil der ja mit anderen Programmen funktioniert. Ich würde gern wissen, ob es prinzipiell nicht möglich ist den Code mit Qt auszuführen, oder ob es da evtl. eine Möglichkeit gibt.
Das nützt leider nichts, denn das ist ein Bestandteil der Anweisung.
Ich habe schon ziemlich viel mit dem SQL Code rumgespielt und verschiedene Änderungen versucht. Hat alles nichts gebracht.
falls es an dem "^"-Zeichen liegt, kannst Du IMHO auch andere Zeichen verwenden. Es muß nur ein Zeichen sein, welches in der SQL-Anweisung nicht vorkommt, da dieses Zeichen vorübergehend als Terminator dient (statt dem ";").
Befehl schon auf der firebird command line getestet?
Falls es dort funktioniert, logging der datenbank aufdrehen, um zu sehen, welcher befehl tatsächlich bei der db ankommt, eventuell irgendwelche zeichenkodierungsprobleme..