Tencent/APIJSON

APIJSON能不能保证事务啊

han-1023 opened this issue · 8 comments

前提:数据库表格之间没有任何关系
例子:添加一条数据到流水表 根据流水的账户id会锁定账户表主键id从而改变余额信息
像这样的操作一个要添加数据到表格,一个要修改数据,APIJSON的话一次请求不能完成的,这种的话怎么保证事物呢?

增删改默认启用事务,但不支持同时 既增又删 这种两个以上操作,可以用远程函数做另一种操作
#101

调用远程函数的话意思是在增加数据的请求体里面调用远程函数 后端写修改sql语句是吗

谢谢

增删改默认启用事务,但不支持同时 既增又删 这种两个以上操作,可以用远程函数做另一种操作 #101

这种说法 使用apijson新增,然后在远程函数里进行修改,那这两个操作是在一个事务里吗?
如果不在,那这两个操作 同时成功或者失败 是不是就没办法保证?

增删改默认启用事务,但不支持同时 既增又删 这种两个以上操作,可以用远程函数做另一种操作 #101

这种说法 使用apijson新增,然后在远程函数里进行修改,那这两个操作是在一个事务里吗? 如果不在,那这两个操作 同时成功或者失败 是不是就没办法保证?

在,只要有一个失败,就整体失败,回滚事务。只有都成功整体才成功,提交事务。

增删改默认启用事务,但不支持同时 既增又删 这种两个以上操作,可以用远程函数做另一种操作 #101

这种说法 使用apijson新增,然后在远程函数里进行修改,那这两个操作是在一个事务里吗? 如果不在,那这两个操作 同时成功或者失败 是不是就没办法保证?

在,只要有一个失败,就整体失败,回滚事务。只有都成功整体才成功,提交事务。
@TommyLemon 我这个也是这样做的,特意把postString的内容改成新增已有的数据,但是修改可以成功修改,然后到新增之后由于id主键重复,导致无法添加就会报错,然后不应该是之前修改的数据也会回滚吗?为什么没有回滚
image

@TommyLemon 我这个也是这样做的,特意把postString的内容改成新增已有的数据,但是修改可以成功修改,然后到新增之后由于id主键重复,导致无法添加就会报错,然后不应该是之前修改的数据也会回滚吗?为什么没有回滚

@AwenJackson
不要重复 new Parser/Controller,这样保证不了事务,必须在同一个 Parser 内处理。
可以传 DemoParser 实例 parser 到 DemoFunctionParser,然后 parser.parseResponse