-
-
Notifications
You must be signed in to change notification settings - Fork 831
/
Copy pathupsert.test.js
27 lines (25 loc) · 1.04 KB
/
upsert.test.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var sqlite3 = require('..');
var assert = require('assert');
describe('query properties', function() {
var db;
before(function(done) {
db = new sqlite3.Database(':memory:');
db.run("CREATE TABLE foo (id INT PRIMARY KEY, count INT)", done);
});
(sqlite3.VERSION_NUMBER < 3024000 ? it.skip : it)('should upsert', function(done) {
var stmt = db.prepare("INSERT INTO foo VALUES(?, ?)");
stmt.run(1, 1, function(err) { // insert 1
if (err) throw err;
var upsert_stmt = db.prepare("INSERT INTO foo VALUES(?, ?) ON CONFLICT (id) DO UPDATE SET count = count + excluded.count");
upsert_stmt.run(1, 2, function(err) { // add 2
if (err) throw err;
var select_stmt = db.prepare("SELECT count FROM foo WHERE id = ?");
select_stmt.get(1, function(err, row) {
if (err) throw err;
assert.equal(row.count, 3); // equals 3
});
});
});
db.wait(done);
});
});