Reputation: 5003
I need to execute insert and delete query in a single statement like this
INSERT INTO COMPANY (ID,NAME) VALUES (1, 'Paul');DELETE FROM COMPANY WHERE ID='12';
This is my node.js code for executing query
pg.connect(pgConString, function (err, client, done) {
if (err) {
callBack("DB connection failed. " + err, null);
return;
}
var query = client.query({
text: "INSERT INTO COMPANY (ID,NAME) VALUES (1, 'Paul');DELETE FROM COMPANY WHERE ID='12';"
values: [1, "Poul1"],
name: "insertQuery"
});
query.on("error", function (err) {
callBack("DB insertion failed. Error Message: " + err, null);
return;
});
query.on('end', function (result) {
done();
return;
});
});
I got error message like this
error: cannot insert multiple commands into a prepared statement
is it possible to execute multiple queries in postgresql database using node.js ?
Upvotes: 23
Views: 29626
Reputation: 415
Although there is an accepted answer, it's a bit obsolete. For now node-postgres handles multiple queries in one call and returns a neat little array to you, like:
const db.query('select 1; select 2; select 3;')
results.map(r => (r.rows[0]['?column?']))
// [ 1, 2, 3 ]
There is also an alternative 'opinionated' library, called pg-promise, which also accepts query chains in one call and works with sql
files as well.
Upvotes: 10
Reputation: 25940
When using pg-promise...
First, we declare our queries + values via a flexible QueryFormat list:
const queries = [
{query: 'select * from products where price > $1', values: [12.5]},
{query: 'select * from payments where amount < ${amount}', values: {amount}}
];
Then we create a single-query formatted string:
const sql = pgp.helpers.concat(queries);
And then we execute it, and retrieve the result:
const [products, payments] = await db.multi(sql);
Upvotes: 5
Reputation: 411
Try like this
pg.connect(pgConString, function (err, client, done) {
if (err) {
callBack("DB connection failed. " + err, null);
return;
}
client.query({
text: "INSERT INTO COMPANY (ID,NAME) VALUES (1, 'Paul');",
values: [1, "Poul1"],
name: "insertQuery"
});
client.query({
text: "DELETE FROM COMPANY WHERE ID='12';",
name: "deleteQuery"
});
client.on("error", function (err) {
callBack("DB insertion failed. Error Message: " + err, null);
return;
});
});
Upvotes: 4