私はカウンターcom.datastax.driver.coreパッケージを使用しての列、およびクラス内の関数で表を作成します。Cassandraでカウンタ列を削除した後、レコードをリセットするにはどうすればよいですか?
:ようCQLSHからこのI 削除されたテーブルエントリ後public void doStartingJob(){
session.execute("CREATE KEYSPACE myks WITH replication "
+ "= {'class':'SimpleStrategy', 'replication_factor':1};");
session.execute("CREATE TABLE myks.clients_count(ip_address text PRIMARY KEY,"
+ "request_count counter);");
}
[email protected]:~$ cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.9 | CQL spec 3.4.2 | Native protocol v4]
Use HELP for help.
cqlsh:myks> DELETE FROM clients_count WHERE ip_address='127.0.0.1';
そして同じ主キーと行を挿入するために、私は(cqlsh介して)ステートメントを以下の使用:
UPDATE myks.clients_count SET request_count = 1 WHERE ip_address ='127.0.0.1';
そして、それは、次のように許可されていません。
InvalidRequest: Error from server: code=2200 [Invalid query] message="Cannot set the value of counter column request_count (counters can only be incremented/decremented, not set)"
しかし、私がしたいレコードのカウンタ列の値が1に設定され、同じプライマリキーを持つべきです。 (機能要件)
どのように同じを行うには?
は、UPDATEマイクの後のDELETEの後です。clients_count SET request_count = 1 WHERE ip_address = '127.0.0.1';私がUPDATE myks.clients_count経由で再更新するときSET request_count = request_count +1 WHERE ip_address = '127.0.0.1';私は削除した値でカウンタを更新しています。 –
ありがとうございます@ xmas79 –
**カウンターレコードは決して削除されません** [THIS。](http://stackoverflow.com/a/13694777/7081346)を参照してください。 –