在尝试进行批量插入时,出现此错误:
RequestError:批量复制失败。用户对表'tableName'没有ALTER TABLE权限。如果表具有触发器或检查约束,则需要对该表具有触发器或检查约束的目标表具有ALTER TABLE权限,但是未将“ FIRE_TRIGGERS”或“ CHECK_CONSTRAINTS”批量提示指定为批量复制命令的选项。
下面是代码段。
const table = new sql.Table('tableName');
table.create = true
table.columns.add('c1', sql.BigInt, { nullable: false, primary: true })
table.columns.add('c2', sql.VarChar(40), { nullable: false })
table.columns.add('c3', sql.VarChar(40), { nullable: false })
_.forEach(result, function (row) {
table.rows.add(row.c1data, row.c2data, row.c3data);
});
await pool.request().bulk(table, async (err, result) => {
if (err) {
log.error("Error in bulk insert " + err);
sql.close();
}
else {
log.info("Successfully inserted");
status = true;
sql.close();
}
});
这在用户具有所有访问权限的较低环境中正常工作,但在用户打算具有有限访问权限的较高环境中不起作用。我们能否像下面提到的那样指定选项CHECK_CONSTRAINTS和FIRE_TRIGGER: