为什么指定表上的voltdb的默认删除和更新过程不起作用

时间:2018-03-21 07:52:14

标签: voltdb

我使用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

我不知道为什么默认删除或更新在大多数情况下无效。

1 个答案:

答案 0 :(得分: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)

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