Někdy je potřeba zapsat data do databáze nezávisle na aktuálně běžící transakci. Například chceme zalogovat nějaký stav, ke kterému v aplikaci došlo, ale případná výjimka by měla za následek zrušení celé transakce, včetně onoho zápisu do logu. Mohlo by to vypadat následovně:
LogTable logTable; ; ttsbegin; logTable.Message = "Něco se stalo"; logTable.insert(); //nějaký následný kód ve stejné transakci vyhazuje výjimku throw Exception::Error; ttscommit;
Dá se to vyřešit poměrně jednoduše. Potřebujeme vytvořit samostatné připojení do databáze a případně vlastní transakci. Modifikace předchozího kódu by vypadala takto:
LogTable logTable; UserConnection connection = new UserConnection(); ; ttsbegin; //použij jiné připojení logTable.setConnection(connection); //začátek nezávislé transakce logTable.ttsbegin(); logTable.Message = "Něco se stalo"; logTable.insert(); logTable.ttscommit(); //tato výjimka nemá vliv na zápis do logTable throw Exception::Error; ttscommit;