假设您要在表中插入多个值。在每次插入之前和之后,必须执行一些相关的操作,因此所有这些过程必须在单个事务中完成。现在假设每个插入的行相关操作都依赖于先前提交的插入。现在哪种情况更好:
- 在程序级别迭代插入值并每次调用存储过程(MySQL服务器和应用程序安装在不同的机器上)
- 使用带有内部事务和提交的游标
- 使用 while 循环
- 其他场景
假设您要在表中插入多个值。在每次插入之前和之后,必须执行一些相关的操作,因此所有这些过程必须在单个事务中完成。现在假设每个插入的行相关操作都依赖于先前提交的插入。现在哪种情况更好:
他们都不会是辉煌的。SQL 并不是真正为这种处理而设计的。触发器是一种可能性,但这最终可能比上述任何解决方案都更加混乱。除非循环非常简单,例如整数,否则我可能会自己使用光标。
可能有办法绕过它,但这取决于你想要做的确切处理,可能还有我们自己的偏好
就个人而言,我会考虑建立一个表单的插入查询
INSERT INTO tbl_name
(a,b,c)
VALUES
(1,2,3)
,(4,5,6)
,(7,8,9);
如果您无法将数据集传递给存储过程以进行单个插入,则在代码中构建它。这里似乎有很多关于不同语言的示例(编辑:包括在 SQL 中)
编辑:回答评论。不,我确实明白。我的意思是您首先在代码中构建它(使用任何先前提交的数据和/或要插入的新数据)。在我看来,您应该避免多次调用 SQL DB,除非它成为需要的优化,因为单个事务将锁定数据(当然取决于您选择的隔离级别)。该示例只是为了显示最终的 sql 将归结为什么。那有意义吗?