#18346·sequelize

支持 msql 和 db2 `bulkInsertQuery' 的“参数系统: BIND” 覆盖

作者: WikiRik创建于 2026年9月7日更新于 2026年9月7日
标签pending-approval

□ 发行创建检查列表

□ 特性描述

#17752在 " Model.bulkCreate " / "weryInterface#bulkInsert " 中增加了一个选入 " 参数系统:参数系统 " 选项。 抽象的bulkInsertQuery'执行它,因此邮递、MySQL、mariadb、sqlite3、雪花和ibmi支持它。 MsSqlQueryGenerator#bulkInsertQuery'和Db2QueryGenerator#bulkInsertQuery'是单独的执行,它们总是以字面表示内含值,因此这两种方言宣布支持. 插入.bulkInsertParameter Styles[ParemeterStyle.BIND]=假'并拒绝BIND'请求。 TODO'在这些旗帜旁边的评论在这里指向。

描述你想要的解决方案

两者都接受bindParam' 的收集器,如同抽象执行一样,将bindParam ' 输入escape()',返回Q'查询,绑定,并翻转能力旗以真实'。 需要考虑的事项:

  • ** mssql** 已插入到分批的1 000行( " packages/msql/src/query-generator.js " , " offset QQ 1000 " 循环)中,并把它们合并为一个多报表串。 用绑定参数,整个字符串是一个`sp executesql'调用,因此,2100参数的每个报表限制适用于 * 组合 * 语句。 要么在绑定时降低批量大小(2100/列数),要么从查询接口中每批发出一个查询,而不是加入它们.
  • ** msql**SET IDENT-INSERT.OON/OFF ' 包装和OUPUT INSERTED.**/ " 返回 " 临时表格路径必须与约束地图保持一致。
  • db2 使用template ()'字符串替换来组装语句,该语句需要更改,因此$sequelize-N' 符号未受影响,而SELECT * from Finish Table (.) ' 用于返回'的语句仍必须包罗有约束的询问。
  • 单位在包装/核心/测试/单元/dialects/{msql,db2}/query-generator.test.js'和包装/核心/测试/单元/query-interface/bulk-Accident.ts'中测试目前通过能力旗将这些方言的"仅置换"行为标出,因此它们只需要增加国旗倒转加约束预期值。

为何要在Sequelize中执行?

用户选择“BIND”将数值排除在SQL文本和日志之外,重新使用执行计划,并避开字面-遮盖边框。 它不应该默默地依赖方言. 在此之前,能力旗会明确限制,而不是忽略选项.

你愿意通过提交Pull Request来解决这个问题吗?

  • [ 是的 我有时间 我知道怎么开始
  • [ 是的 我有时间 但我需要指导
  • [ 不,我没有时间, 但我的公司或我 支持Sequelize 通过捐赠 在公开集会。
  • [ 不,我没有时间,我明白,我需要等待 这个问题由别人解决.

内容来源: sequelize/sequelize