我一直在使用最新的Cassandra版本https://github.com/apache/cassandra/blob/trunk/examples/triggers/src/org/apache/cassandra/triggers/AuditTrigger.java的示例触发器代码,我想基本上执行相同的逻辑,但我得到了堆栈,因为我的架构包含一个复合键。
问题是如何创建复合键并将其传递到触发器中的RowUpdateBuilder?
审计表的架构看起来像是休闲:
CREATE TABLE audit_table (
aggregate bigint,
create_date timeuuid,
...
PRIMARY KEY(aggregate, create_date)
) WITH CLUSTERING ORDER BY (create_date ASC);
答案 0 :(得分:0)
在您创建了RowBuilderUpdate
之后,您可以调用clustering
函数来设置群集密钥。之后你就像平常一样使用它。
public Collection<Mutation> augment(Partition update) {
...
int cluster = 1;
...
RowUpdateBuilder audit =
new RowUpdateBuilder(Schema.instance.getCFMetaData(auditKeyspace, auditTable),
FBUtilities.timestampMicros(),
(java.lang.Object)key);
audit = audit.clustering(cluster);
...
return Collections.singletonList(audit.build());
}
此外,如果您需要从触发它的记录中获取密钥,请查看this answer。