2017-06-01 1 views
0

Ich bin neu in Casandra und ich muss nächste inkrementelle ID in die Tabelle einfügen Versucht, die Syntax als mysql zu verwenden.Wie bekomme ich die nächste ID von casandra trable

INSERT INTO demo.log (id, transaction_type , transaction_time, transaction_data, session_id) VALUES (select max(id)+1 from demo.log ,'master' ,'2017-05-27 14:30:54.234' ,'1›6378925487955990›1›0›251›96544›/Date(1474519292176+0800)/›200›3›1›0' ,'789789d7f9-k97f8gh9f8f-001'); 

Fehler:

SyntaxException: line 1:117 no viable alternative at input 'select' (..., session_id) VALUES ([(]select...) 
+0

Sie können Unterauswahlen in CQL nicht tun. Und die [integrierten Aggregatfunktionen] (http://docs.datastax.com/en/cql/3.3/cql/cql_using/useQueryStdAggregate.html) funktionieren nur mit einem Partitionsschlüssel. – Ralf

Antwort

2

Sie können, dass die (sub-Abfragen) nicht tun, gibt es keine Funktion, sie zu unterstützen, und es wird nicht unterstützt. Sie können so etwas mit Zählern oder LWTs machen, aber es ist eine wirklich schlechte Idee.

Ich würde Ihnen empfehlen, einen Typ 1 oder 4 Uuids für die ID zu verwenden (stellen Sie den Typ auf timeuuid oder uuid ein). In einem verteilten System ist die atomare Erhöhung solcher Dinge furchtbar teuer und komplex.

Verwandte Themen