0

我使用 voltdb 生成的默认程序来更新下表,

schema:
create table sys_sec_user_org_role(
user_id             bigint                          not null,
org_id              integer                         not null,
role_id             integer                         not null,
primary key(user_id,role_id,org_id)
);
partition table sys_sec_user_org_role on column user_id;

然后默认程序创建成功,我按以下顺序调用程序

insert:exec SYS_SEC_USER_ORG_ROLE.insert 2 3 4
sucess:modified_tuples:1

然后删除插入的行

delete:exec SYS_SEC_USER_ORG_ROLE.delete 2 3 4
modified_tuples:0

我不知道为什么在大多数情况下都可以使用默认删除或更新在此表上不起作用。

4

1 回答 1

0

[更新]

我在 VoltDB 工作。感谢您分享这一点。我得到了和你一样的结果,最初认为这是一个错误,但我们的一位工程师注意到了这个问题。

虽然 .insert 过程按照列在表中定义的顺序获取参数,但 .update 和过程仅在定义了主键时生成,并且参数需要按照定义的列顺序主键。

如果按主键列的顺序传入参数,默认过程将找到匹配的行并更新或删除它。

--exec <tablename>.delete <user_id> <role_id> <org_id>;

exec SYS_SEC_USER_ORG_ROLE.delete 2 4 3;
(Returned 1 rows in 0.02s)

这是我之前记录的,以供参考。

于 2018-03-21T14:56:00.770 回答