これが私のシナリオです。テーブルにクローンid
主キーとclusterkey
クラスターキーがあると考えてください。主キーに該当する 1 つのレコードを削除し、同じ主キーで異なるクラスター キーを持つ新しいレコードを挿入したいと考えています。この場合、並行性のために常に挿入が行われていないように見えますか? タイムスタンプを使用してみましたが、同じ問題です。
const query1 = 'delete from table where id=? and clusterkey=?';
const query2 = 'INSERT INTO table (id, clusterkey, name) VALUES (?, ?, ?)';
const queries = [
{ query: query1, params: ['1', '3'] },
{ query: query2, params: ['1', '8', 'GoodName'] }
];
client.batch(queries, { prepare: true }, function (err) {
console.log(err, 'done')
});
タイムスタンプの使用
const query1 = 'delete from table where id=? and clusterkey=? using timestamp ?';
const query2 = 'INSERT INTO table (id, clusterkey, name) VALUES (?, ?, ?) using timestamp ?';
const queries = [
{ query: query1, params: ['1', '3', Date.now() * 1000] },
{ query: query2, params: ['1', '8', 'GoodName', Date.now() * 1000] }
];
client.batch(queries, { prepare: true }, function (err) {
console.log(err, 'done')
});
テーブル情報:
create table sample (id text, group text, name text, PRIMARY KEY (id, group))
クエリ結果:
バッチの前に結果を選択
id |clusterkey |name
-----------------------------
1 |3 |wrongname
2 |2 |Hello
バッチ後
id |clusterkey |name
-----------------------------
2 |2 |Hello