- Mastering PostgreSQL 10
- Hans Jürgen Sch?nig
- 408字
- 2021-06-30 19:03:49
Working with PostgreSQL transactions
PostgreSQL provides you with a highly advanced transaction machinery that offers countless features to developers and administrators alike. In this section, it is time to look at the basic concept of transactions.
The first important thing to know is that in PostgreSQL, everything is a transaction. If you send a simple query to the server, it is already a transaction. Here is an example:
test=# \x Expanded display is on.
test=# SELECT now(), now();
now | now
-------------------------------+------------------------------
2017-08-24 16:03:27.174253+02 | 2017-08-24 16:03:27.174253+02
(1 row)
In this case, the SELECT statement will be a separate transaction. If the same command is executed again, different timestamps will be returned.
If more than one statement has to be a part of the same transaction, the BEGIN statement must be used:
test=# \h BEGIN
Command: BEGIN
Description: Start a transaction block
Syntax:
BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]
where transaction_mode is one of:
ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ
| READ COMMITTED | READ UNCOMMITTED }
READ WRITE | READ ONLY
[ NOT ] DEFERRABLE
The BEGIN statement will ensure that more than one command will be packed into a transaction. Here is how it works:
test=# BEGIN; BEGIN
test=# SELECT now(); now ------------------------------- 2017-08-24 16:04:08.105131+02 (1 row)
test=# SELECT now(); now ------------------------------- 2017-08-24 16:04:08.105131+02 (1 row)
test=# COMMIT; COMMIT
The important point here is that both timestamps will be identical. As mentioned earlier, we are talking about transaction time here.
To end the transaction, COMMIT can be used:
test=# \h COMMIT
Command: COMMIT
Description: Commit the current transaction
Syntax:
COMMIT [ WORK | TRANSACTION ]
There are a couple of syntax elements here. You can just use COMMIT, COMMIT WORK, or COMMIT TRANSACTION. All three options have the same meaning. If this is not enough, there is more:
test=# \h END Command: END Description: commit the current transaction Syntax: END [ WORK | TRANSACTION ]
The END clause is the same as the COMMIT clause.
ROLLBACK is the counterpart of COMMIT. Instead of successfully ending a transaction, it will simply stop the transaction without ever making things visible to other transactions:
test=# \h ROLLBACK
Command: ROLLBACK
Description: Abort the current transaction
Syntax:
ROLLBACK [ WORK | TRANSACTION ]
Some applications use ABORT instead of ROLLBACK. The meaning is the same.
- 輕松學C#
- 城市道路交通主動控制技術
- Hands-On Cybersecurity with Blockchain
- Windows 7寶典
- 大學C/C++語言程序設計基礎
- Machine Learning with the Elastic Stack
- 基于企業(yè)網站的顧客感知服務質量評價理論模型與實證研究
- HBase Essentials
- 基于RPA技術財務機器人的應用與研究
- Creating ELearning Games with Unity
- Cloudera Hadoop大數(shù)據(jù)平臺實戰(zhàn)指南
- 51單片機應用程序開發(fā)與實踐
- 數(shù)據(jù)結構與算法(C++語言版)
- Building Impressive Presentations with Impress.js
- 巧學活用WPS