>>Можно ли в QSqlQuery писать весь код транзакции?
попробуй и отпишись.
Я только на одну граблю в QSqlQuery наступал, точка с запятой не канает в выражении (не помню какую ошибку возвращает), тестил на FB и SQLite.
Например:
SQL
CREATE  TABLE wrk ( 
id	INTEGER	PRIMARY KEY AUTOINCREMENT,
RefDes	Text,
Type	Text,
Value	Text,
FullName Text,
RefName Text,
Pattern	Text);
 
 
/*  ========== Заполнение таблицы wrk ===============   */
 
	/* использование запроса */ 
INSERT INTO wrk ( 
	RefDes,
	Type,
	Value,
	FullName,
	Pattern)
 
SELECT
	RefDes,
	ComponentName,
	Value,
	(ComponentName || (CASE WHEN Value = '' THEN '' ELSE (' ' || Value) END)),
	PatternName
FROM PCB
нужно отдельными  запросами делать