Le 11/04/2015 03:53, Xiangrong Fang a écrit :

The transaction process depends upon the DBMS used. In a general way, all DBMS execute SQL statement under the control of a transaction. Some of the DBMS (MS SQL Server) use to have "automatic" transaction control as default and some others (Firebird) need explicit Start and Commits. Using Oracle definition a transaction "is a logical, atomic unit of work that contains one or more SQL statements". I'm used to always work with fine tuned transaction control. This way I know what the DBMS is doing with data.

1. How to control the use of transactions in SQLDB? Sometime I do NOT want transaction, but want the DDL/DML statement to be executed immediately. Why sometime SQLDB's ExecSQL won't take effect if not followed by a Commit? BTW, I tried to set tr.Active to true/false before execute the sql, but it seems not making a difference?

Michael's comments do not need further explanation

If you want an Sql statement be executed immediately attach an TSqlTransaction to a DB component, attach the TSqlQuery to the transaction and enclose it between a StartTransaction and a Commit.

TR.StartTransaction;
qr.ExecSql;
TR.Commit;

The Commit matters as well

Working with DBMS since a long time, I always use the same rules: Start a transaction, do whatever Sql statements have to be done all together, Commit the transaction. This way I control how data is goes to and from the databsase.
Xiangrong


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus



---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel 
antivirus Avast.
http://www.avast.com
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to