Доброго времени суток!
Ребята при работе с FireBird возникли ряд вопросов..
1. Интересует как правильно делать транзакции.
Нужно ли выполнять транзакцию для запроса SELECT?
В своей программе я делаю транзакции так:
Компоненты
Код:
Transaction: TIBTransaction;
db: TIBDatabase;
sql: TIBQuery;
Для SELECTа
Код:
sql.Transaction.StartTransaction;
sql.SQL.Clear;
sql.SQL.Add('SELECT * FROM LOGIN');
sql.Transaction.Active:=True;
sql.Transaction.Commit;
sql.Close;
sql.Open;
Для INSERTа
Код:
sql.Transaction.StartTransaction;
sql.SQL.Clear;
sql.SQL.Add('INSERT INTO LOGIN (ACCOUNT) VALUES (NEWACCAUNT)');
sql.ExecSQL;
sql.Transaction.Active:=True;
sql.Transaction.Commit;
Самое главное то чтобы когда я запустил свою программу два раза,
и в одной копии добавил запись с помощью INSERT в таблицу LOGIN, а в другой копии загрузил с помощью SELECT все данные с таблицы LOGIN, то данные, которые были внесены первой копией отображались во второй копии...
Правильно ли я делаю эти транзакции? Если что то лишнее или не правильное прошу Вас поправить...
2. Существует так называемая ошибка Deadlock.(Конфликт обновления.)
Как избежать ее? Ну или хотя бы свести ее возникновение к минимуму..
3. Какие должны быть параметры в Transaction: TIBTransaction; ???
Или параметры по умолчанию оптимальные?
Может ответ в них как то можно предотвратить DeadLock?