在 PostgreSQL 的事务中;执行的SQL遇到错误(书写,约束限制);该事务的已经执行的SQL都会进行rollback。那如何忽略其中的错误。将SQL执行到底?在事务中设置 ON_ERROR_ROLLBACK 即可。
下面演示
1、未作任何设置
演示脚本
begin;-- 1、创建表tbl_test_01create table tbl_test_01(id int primary key, info text);-- 2、插入异常数据insert into tbl_test_01 values ('hello', 'PostgreSQL');-- 3、插入正常数据insert into tbl_test_01 values (1001, 'PostgreSQL');end;
执行过程
postgres=# begin;BEGINpostgres=# create table tbl_test_01(id int primary key, info text);CREATE TABLEpostgres=# insert into tbl_test_01 values ('hello', 'PostgreSQL');ERROR: invalid input syntax for type integer: "hello"LINE 1: insert into tbl_test_01 values ('hello', 'PostgreSQL'); ^postgres=# insert into tbl_test_01 values (1001, 'PostgreSQL');ERROR: current transaction is aborted, commands ignored until end of transaction blockpostgres=# end;ROLLBACKpostgres=# \d tbl_test_01Did not find any relation named "tbl_test_01".
执行结果
- 执行结果是ROLLBACK
- 执行的正常SQL也ROLLBACK
2、设置 ON_ERROR_ROLLBACK
演示脚本
begin;\set ON_ERROR_ROLLBACK interactivecreate table tbl_test_01(id int primary key, info text);insert into tbl_test_01 values ('hello', 'PostgreSQL');insert into tbl_test_01 values (1001, 'PostgreSQL');end;
执行过程
postgres=# begin;BEGINpostgres=# \set ON_ERROR_ROLLBACK interactivepostgres=# create table tbl_test_01(id int primary key, info text);CREATE TABLEpostgres=# insert into tbl_test_01 values ('hello', 'PostgreSQL');ERROR: invalid input syntax for type integer: "hello"LINE 1: insert into tbl_test_01 values ('hello', 'PostgreSQL'); ^postgres=# insert into tbl_test_01 values (1001, 'PostgreSQL');INSERT 0 1postgres=# end;COMMITpostgres=# \d tbl_test_01 Table "public.tbl_test_01" Column | Type | Collation | Nullable | Default --------+---------+-----------+----------+--------- id | integer | | not null | info | text | | | Indexes: "tbl_test_01_pkey" PRIMARY KEY, btree (id)postgres=# select * from tbl_test_01; id | info ------+------------ 1001 | PostgreSQL(1 row)
执行结果
- 执行结果是COMMIT
- 表 tbl_test_01 成功创建
- 数据 (1001, 'PostgreSQL') 也成功插入
原文转载:http://www.shaoqun.com/a/497377.html
auditor:https://www.ikjzd.com/w/2437
易联通:https://www.ikjzd.com/w/1854.html
c88是什么:https://www.ikjzd.com/w/1017.html
在PostgreSQL的事务中;执行的SQL遇到错误(书写,约束限制);该事务的已经执行的SQL都会进行rollback。那如何忽略其中的错误。将SQL执行到底?在事务中设置ON_ERROR_ROLLBACK即可。下面演示1、未作任何设置演示脚本begin;--1、创建表tbl_test_01createtabletbl_test_01(idintprimarykey,infotext);--2、
xinong:xinong
史泰博:史泰博
2020三月适合去哪里旅游 3月份适合去旅游的城市精选:2020三月适合去哪里旅游 3月份适合去旅游的城市精选
史上最前沿的测评养号系统,亚马逊测评如何降低成本,提高效率,搭建稳定的IP环境?:史上最前沿的测评养号系统,亚马逊测评如何降低成本,提高效率,搭建稳定的IP环境?
深圳笋岗有什么好玩的?:深圳笋岗有什么好玩的?
没有评论:
发表评论