您对使用INSERT
的多个记录中的DELETE
和node-postgres
有何看法。我对此线程进行了一些指导:
https://github.com/brianc/node-postgres/issues/957
但是我不确定我的代码是否遵循最佳方法。
添加多条记录(具有多行)并使用TRANSACTION
:
try{
const data = [[1,1],[1,2],[1,5]];
const values1 = []; //[1,1,1]
const values2 = []; //[1,2,5]
data.map((element)=>{
values1.push(element[0]);
values2.push(element[1]);
})
//transaction
await client.query('BEGIN');
const text = `INSERT INTO user_role (id_user, id_role) SELECT * FROM UNNEST ($1::int[], $2::int2[])`;
const values = [value1,value2]
const { rows } = await client.query(text,values);
await client.query('COMMIT');
...
}
catch{
await client.query('ROLLBACK');
...
}
删除多条记录(使用多行)并使用TRANSACTION
:
try {
const data = [[1,1],[1,2],[1,5]];
const values1 = []; //[1,1,1]
const values2 = []; //[1,2,5]
data.map((element)=>{
values1.push(element[0]);
values2.push(element[1]);
})
const text = `DELETE FROM users WHERE (id_user,role) IN (SELECT * FROM (UNNEST($1::int[],$2::int[]))`;
const values = [values1,values2];
//transaction
await client.query('BEGIN');
const { rows } = await client.query[text, values];
await client.query('COMMIT');
...
}
catch{
await client.query('ROLLBACK');
...
}