![]() |
|
|
#1
|
|||
|
|||
|
Доброго времени суток!
Ребята при работе с 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? |