| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #ifndef APP_SQL_TRANSACTION_H_ | |
| 6 #define APP_SQL_TRANSACTION_H_ | |
| 7 #pragma once | |
| 8 | |
| 9 #include "base/basictypes.h" | |
| 10 | |
| 11 namespace sql { | |
| 12 | |
| 13 class Connection; | |
| 14 | |
| 15 class Transaction { | |
| 16 public: | |
| 17 // Creates the scoped transaction object. You MUST call Begin() to begin the | |
| 18 // transaction. If you have begun a transaction and not committed it, the | |
| 19 // constructor will roll back the transaction. If you want to commit, you | |
| 20 // need to manually call Commit before this goes out of scope. | |
| 21 explicit Transaction(Connection* connection); | |
| 22 ~Transaction(); | |
| 23 | |
| 24 // Returns true when there is a transaction that has been successfully begun. | |
| 25 bool is_open() const { return is_open_; } | |
| 26 | |
| 27 // Begins the transaction. This uses the default sqlite "deferred" transaction | |
| 28 // type, which means that the DB lock is lazily acquired the next time the | |
| 29 // database is accessed, not in the begin transaction command. | |
| 30 // | |
| 31 // Returns false on failure. Note that if this fails, you shouldn't do | |
| 32 // anything you expect to be actually transactional, because it won't be! | |
| 33 bool Begin(); | |
| 34 | |
| 35 // Rolls back the transaction. This will happen automatically if you do | |
| 36 // nothing when the transaction goes out of scope. | |
| 37 void Rollback(); | |
| 38 | |
| 39 // Commits the transaction, returning true on success. This will return | |
| 40 // false if sqlite could not commit it, or if another transaction in the | |
| 41 // same outermost transaction has been rolled back (which necessitates a | |
| 42 // rollback of all transactions in that outermost one). | |
| 43 bool Commit(); | |
| 44 | |
| 45 private: | |
| 46 Connection* connection_; | |
| 47 | |
| 48 // True when the transaction is open, false when it's already been committed | |
| 49 // or rolled back. | |
| 50 bool is_open_; | |
| 51 | |
| 52 DISALLOW_COPY_AND_ASSIGN(Transaction); | |
| 53 }; | |
| 54 | |
| 55 } // namespace sql | |
| 56 | |
| 57 #endif // APP_SQL_TRANSACTION_H_ | |
| OLD | NEW |