Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Triggers 删除操作时的Cassandra 3触发器_Triggers_Cassandra - Fatal编程技术网

Triggers 删除操作时的Cassandra 3触发器

Triggers 删除操作时的Cassandra 3触发器,triggers,cassandra,Triggers,Cassandra,我试图在Cassandra 3上实现一个触发器,通过实现 public Collection<Mutation> augment(Partition partition) 公共集合扩充(分区) 在ITrigger界面上,但我无法区分更新和删除操作 如何捕获该操作是删除操作?以下是如何捕获所有类型的删除 public Collection<Mutation> augment(Partition partition) { if(partition.partiti

我试图在Cassandra 3上实现一个触发器,通过实现

 public Collection<Mutation> augment(Partition partition)
公共集合扩充(分区)
ITrigger
界面上,但我无法区分更新和删除操作


如何捕获该操作是删除操作?

以下是如何捕获所有类型的删除

public Collection<Mutation> augment(Partition partition) {
    if(partition.partitionLevelDeletion().isLive()) {
        UnfilteredRowIterator it = partition.unfilteredIterator();
        while (it.hasNext()) {
            Unfiltered unfiltered = it.next();
            switch (unfiltered.kind()) {
                case ROW:
                    Row row = (Row) unfiltered;

                    if (!row.deletion().isLive()) {
                        // Row deletion
                    }

                    for (Cell cell : row.cell()) {
                        if (cell.isTombstone() {
                            // Cell deletion
                        } else {
                            // Insert or Update
                        }  
                    }
                    break;
                case RANGE_TOMBSTONE_MARKER:
                    // Range Deletion
                    break;
            }
        }
    } else {
        // Partition Level Deletion
    }
}
这里pk是分区键,ck是集群键

分区级删除:

DELETE from kv WHERE pk = 1;
DELETE from kv WHERE pk = 1 AND ck > 10;
范围删除:

DELETE from kv WHERE pk = 1;
DELETE from kv WHERE pk = 1 AND ck > 10;
行删除:

 DELETE from kv WHERE pk = 1 AND ck = 10;
和单元格删除:

DELETE d from kv WHERE pk = 1 AND ck = 10;

以下是如何捕获所有类型的删除

public Collection<Mutation> augment(Partition partition) {
    if(partition.partitionLevelDeletion().isLive()) {
        UnfilteredRowIterator it = partition.unfilteredIterator();
        while (it.hasNext()) {
            Unfiltered unfiltered = it.next();
            switch (unfiltered.kind()) {
                case ROW:
                    Row row = (Row) unfiltered;

                    if (!row.deletion().isLive()) {
                        // Row deletion
                    }

                    for (Cell cell : row.cell()) {
                        if (cell.isTombstone() {
                            // Cell deletion
                        } else {
                            // Insert or Update
                        }  
                    }
                    break;
                case RANGE_TOMBSTONE_MARKER:
                    // Range Deletion
                    break;
            }
        }
    } else {
        // Partition Level Deletion
    }
}
这里pk是分区键,ck是集群键

分区级删除:

DELETE from kv WHERE pk = 1;
DELETE from kv WHERE pk = 1 AND ck > 10;
范围删除:

DELETE from kv WHERE pk = 1;
DELETE from kv WHERE pk = 1 AND ck > 10;
行删除:

 DELETE from kv WHERE pk = 1 AND ck = 10;
和单元格删除:

DELETE d from kv WHERE pk = 1 AND ck = 10;

谢谢你。当我运行命令“delete from my_table where id=22”时,会调用哪一个?id是分区键?如果是,那么它将是分区级删除您的意思是在这种情况下调用else“else{//partition Level Deletion}”?更新操作中的“else”也会被调用吗?只有当它是delete时,代码
else{//Partition Level deletation}
才会首先调用Insert或update或Range或delete(当您指定集群键或null Insert时)操作,如果它将调用Ashraful。当我运行命令“delete from my_table where id=22”时,会调用哪一个?id是分区键?如果是,那么它将是分区级删除您的意思是在这种情况下调用else“else{//partition Level Deletion}”?并且“else”也会在更新操作中调用吗?只有当它是delete时,代码
else{//Partition Level deletation}
才会调用Insert或update或Range或delete(当您指定集群键或null Insert时)操作,如果将调用