zoukankan      html  css  js  c++  java
  • [Database]SQLite3 Transaction [事务处理]

    >> Transaction

    Begin Transaction

    Commit Transaction

    Rollback Transaction


    >> No Nest Transaction

    Use SavePoint instead.

    SAVEPOINTs are a method of creating transactions, similar to BEGIN and COMMIT, except that the SAVEPOINT and RELEASE commands are named and may be nested.

    Create SAVEPOINT

    Release

    >> 三种Transaction类型

    Deferred/Immediate/Exclusive

        // From My Sqlite3 wrapper: SqliteDataTypes

    ///
    <summary>
    /// Three types of transactions in SQLite: Deferred, Immediate and Exclusive
    /// The default transaction behavior is deferred.
    ///<summary>
    enum TransactionType
    {
    ///<summary>
    /// Deferred Transaction is the default transaction in SQLite.
    /// Statement can be "BEGIN DEFERRED" or "BEGIN".
    /// Deferred means that no locks are acquired on the database until the database is first accessed.
    /// Thus with a deferred transaction, the BEGIN statement itself does nothing to the filesystem.
    /// Locks are not acquired until the first read or write operation.
    /// The first read operation against a database creates a SHARED lock
    /// and the first write operation creates a RESERVED lock.
    /// Because the acquisition of locks is deferred until they are needed,
    /// it is possible that another thread or process could create a separate transaction
    /// and write to the database after the BEGIN on the current thread has executed.
    ///</summary>
    kDeferred = 0,

    ///<summary>
    /// Deferred Transaction is the default transaction in SQLite.
    /// Statement is "BEGIN IMMEDIATE".
    /// If the transaction is immediate, then RESERVED locks are acquired on all databases
    /// as soon as the BEGIN command is executed, without waiting for the database to be used.
    /// After a BEGIN IMMEDIATE, it is guaranteed that no other thread or process
    /// will be able to write to the database or do a "BEGIN IMMEDIATE" or "BEGIN EXCLUSIVE".
    /// Other processes can continue to read from the database.
    ///</summary>
    kImmediate = 1,

    ///<summary>
    /// Statement is "BEGIN EXCLUSIVE".
    /// An exclusive transaction causes EXCLUSIVE locks to be acquired on all databases.
    /// After a BEGIN EXCLUSIVE, no other database connection
    /// except for read_uncommitted connections will be able to read the database
    /// and no other connection without exception will be able to write the database
    /// until the transaction is complete.
    ///<summary>
    kExclusive = 2
    };


    >>官方文档

    http://www.sqlite.org/lang_transaction.html

    http://www.sqlite.org/lang_savepoint.html

  • 相关阅读:
    把arguments转化成数组
    最小化重绘和重排
    选择器API
    事件委托
    WAhaha_hnu (zoj 2010 oct月赛)
    素数计数公式全面拉丁化改写小有改进Meissel公式梅塞尔Lehmer公式莱梅=勒梅尔筛法三种形式孟庆余公式(转载)
    NBUT 2013 Timed NOJ Training #005
    2013 腾讯马拉松初赛第一场
    hrboj 1683 树形DP
    哈尔滨2013校赛训练赛 4 解题思路
  • 原文地址:https://www.cnblogs.com/piaoger/p/2262895.html
Copyright © 2011-2022 走看看