Я пишу программу на C #, которая должна вставлять данные в несколько таблиц. Первая вставка возвращает последний идентификатор строки вставки, который, в свою очередь, используется для вставки в другие таблицы. В псевдокоде:
INSERT INTO TableFoo (Col2, Col3, Col4, etc.) VALUES (@Bla2, @bla3, @bla4);
Сразу после этой вставки я получаю последний идентификатор вставки:
SELECT last_insert_rowid() AS RowId;
Я получаю столбец RowId в хранилище данных и сохраняю его в int "RowId".
Наконец, я вставляю еще несколько таблиц, таких как:
INSERT INTO TableBar (FooId, Col2) VALUES (RowId, @BSomeMoreBla)");
Вопрос : Если возможно, я хочу выполнить эту группу вставок (и RowId выбора) в 1 транзакции, чтобы предотвратить некоторые полусохраненные данные. Можно ли использовать транзакцию в этом сценарии и какой способ предпочтительнее?
Транзакция SQLite?
Пространство имен System.Transaction на C #?
Третий способ выполнения множественной вставки атомарной базы данных ...?