- Mastering PostgreSQL 9.6
- Hans Jurgen Schonig
- 170字
- 2021-07-09 19:57:11
Handling errors inside a transaction
It is not always the case that transactions are correct from beginning to end. However, in PostgreSQL, only error-free transactions can be committed. Here is what happens:
test=# BEGIN;
BEGIN
test=# SELECT 1;
?column?
----------
1
(1 row)
test=# SELECT 1 / 0;
ERROR: division by zero
test=# SELECT 1;
ERROR: current transaction is aborted, commands ignored until end of transaction block
test=# COMMIT;
ROLLBACK
Note that the division by zero did not work out.
In any proper database, an instruction like this will instantly error-out and make the statement fail.
It is important to point out that PostgreSQL will error-out, unlike MySQL, which does not seem to have a problem with a mathematically wrong result.
After an error has occurred, no more instructions will be accepted even if those instructions are semantically and syntactically correct. It is still possible to issue a COMMIT. However, PostgreSQL will roll back the transaction because it is the only thing at this point that can still be done.
推薦閱讀
- 大數據技術與應用基礎
- 輕松學C語言
- Canvas LMS Course Design
- 大數據時代的數據挖掘
- Zabbix Network Monitoring(Second Edition)
- AWS Certified SysOps Administrator:Associate Guide
- Linux:Powerful Server Administration
- 簡明學中文版Photoshop
- 3ds Max造型表現藝術
- 貫通Hibernate開發
- 人工智能:智能人機交互
- 30天學通Java Web項目案例開發
- Learning Cassandra for Administrators
- 機器人制作入門(第4版)
- 中老年人學電腦與上網