支持 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