agens-graph - 如何中止 AgnsGraph 上的失败语句?
问题描述
语句失败后,没有其他语句可以成功。
请参阅以下示例。
agens=# create graph graph;
CREATE GRAPH
agens=# create vlabel v;
CREATE VLABEL
agens=# create unique property index on v ( id );
CREATE PROPERTY INDEX
agens=# begin transaction;
BEGIN
agens=# create (:v{id:1});
GRAPH WRITE (INSERT VERTEX 1, INSERT EDGE 0)
agens=# create (:v{id:1});
ERROR: duplicate key value violates unique constraint "v_id_idx"
DETAIL: Key ((properties.'id'::text))=(1) already exists.
agens=# create (:v{id:2});
ERROR: current transaction is aborted, commands ignored until end of transaction block
agens=# commit;
ROLLBACK
agens=# match (n:v) return n;
n
---
(0 rows)
如何中止 AgnsGraph 上的失败语句?
解决方案
使用 SAVEPOINT 中止部分回滚。
agens=# begin transaction;
BEGIN
agens=# create (:v{id:1});
GRAPH WRITE (INSERT VERTEX 1, INSERT EDGE 0)
agens=# savepoint sp;
SAVEPOINT
agens=# create (:v{id:1});
ERROR: duplicate key value violates unique constraint "v_id_idx"
DETAIL: Key ((properties.'id'::text))=(1) already exists.
agens=# rollback to sp;
ROLLBACK
agens=# create (:v{id:2});
GRAPH WRITE (INSERT VERTEX 1, INSERT EDGE 0)
agens=# commit;
COMMIT
agens=# match (n:v) return n;
n
-----------------
v[3.1]{"id": 1}
v[3.3]{"id": 2}
(2 rows)
推荐阅读
- java - 跳过非必需项的 Spring Boot Gradle 快速构建
- overlay - 使用 HERE 仅使用指定的路线计算路线
- php - 如何防止图像被翻转?
- html - html图像不会加载到网页上
- deployment - 应用模板时,Openshift ImageChange 触发器在 Deploymentconfig 中被删除
- javascript - 与静态祖先的事件绑定导致触发每个点击事件
- python - 如何将 Pandas DataFrame 转换为 RDF(资源描述框架)?
- node.js - 使用passport js在nodejs中验证密码
- ruby-on-rails - 带有 apache 2.4 的 Rails 动作电缆
- python - Selenium - Python,找不到元素