当前位置: 首页 > 面试题库 >

一次插入或更新多个表的最佳实践是什么

卢志行
2023-03-14
问题内容

如果我需要通过一个“动作”来更新或插入到多个表中,请调用一个保存信息的示例,其中有多个包含“信息”的表。

出于参数考虑,可以说我们有下表:

姓名地址汽车工作

每次调用保存信息时,都会将其中的每个表插入其中。

哪个更好:

  1. 获取必须写入名称表的数据。调用InsertOnSubmit并调用SubmitChanges
  2. 获取必须写入地址表的数据。调用InsertOnSubmit并调用SubmitChanges
  3. 获取必须写入Car表的数据。调用InsertOnSubmit并调用SubmitChanges
  4. 获取必须写入作业表的数据。调用InsertOnSubmit并调用SubmitChanges

或者

  1. 获取必须写入名称表的数据。
  2. 获取必须写入地址表的数据。
  3. 获取必须写入Car表的数据。
  4. 获取必须写入作业表的数据。
  5. 调用InsertOnSubmit,然后调用SubmitChanges。

或者

  1. 获取必须写入名称表的数据。调用InsertOnSubmit
  2. 获取必须写入地址表的数据。调用InsertOnSubmit
  3. 获取必须写入Car表的数据。调用InsertOnSubmit
  4. 获取必须写入作业表的数据。调用InsertOnSubmit
  5. 致电SubmitChanges

我已经实现了给出的第一个选项,并且我确信这不是最好的方法。我不知道自己的网络连接是否有问题,但是有时某些表被写入而其他表没有写入,这确保了我没有尽力而为。

在与此问题类似的一些帖子中,有一些与“视图”和其他选项有关的评论。我对此没有经验,因此我需要一些指导,以了解实现此目标的最佳方法以及应该将注意力集中在哪个方向。


问题答案:

准备第一个表的数据并为该表执行InsertInSubmit

然后对于第二,第三,第四表也是如此。

然后执行SubmitChanges。

在数据库中,所有行都将被插入(如果包括这些操作,则将被更新或删除)。如果在数据库更新期间出了点问题,则所有的修改都将被删除(回滚)。因此,数据完整性是安全的!

程序中变量中的数据将不会反映数据库,如果发生了回滚,则需要再次访问该数据。

第二个变体并不总是能很好地工作,因为它将仅包含回滚中的最后一个表。如果表1的插入顺利进行,则2失败,nr 3和4进行顺利,那么您将不会注意到第二次失败。



 类似资料:
  • 将excel的大数据导入到MySQL数据库需要很长时间,那么如何提高性能呢? Excel数据喜欢以下内容: 学生表 床单课程 MySQL的表喜欢如下: 学生桌 资源表 图像的浅灰色区域可能会得到改善,但我不知道如何对其进行优化。使用 和字段确定行数据是否唯一<代码>参考id和表中的字段确定行数据是否唯一。

  • 当多次调用保存时,它可以工作,但需要几分钟。 在我的理解中,保存执行。 因此,如果我可以将放在一起,则需要更短的时间。 有没有这方面的做法?

  • 问题内容: 假设我有两个或两个以上相同长度的列表。遍历它们的好方法是什么? ,是列表。 要么 还是我缺少任何变体? 使用一个相对于另一个有什么特别的优势吗? 问题答案: 通常的方法是使用: 这将停止两个iterables时较短且耗尽。另外值得注意的是:(仅适用于Python 2)和(适用于Python 3)。

  • 问题内容: 我刚开始学习Go,并通读现有代码以学习“其他人的做法”。在这种情况下,遍历使用go“工作区”,尤其是与项目依赖关系有关的地方。 在处理各种Go项目时,使用一个或多个Go工作区(即$ GOPATH的定义)的常见(或存在)最佳实践是什么?我应该期望有一个类似于我所有项目的中央代码存储库的Go工作区,还是在我处理这些项目时都明确将其分解并设置$ GOPATH(有点像python) virtu

  • 问题内容: 我正在建立一个通过各种CSV提要更新大量数据的系统。通常,我只会遍历提要中的每一行,进行选择查询以检查该项目是否已经存在,并根据是否存在来插入/更新该项目。 我觉得这种方法扩展性不强,可能会在较大的提要上重击服务器。我的解决方案是像往常一样遍历所有项目,但将它们存储在内存中。然后,对于每100个左右的项目,对这100个项目进行选择,并获取数据库中匹配的现有项目的列表。然后将插入/更新语

  • 我知道“newInstance”-Pattern(实例化新Android片段的最佳实践)。但是如果另一个片段更改数据,我如何更新片段的这些参数? 我知道片段/活动之间的回调方法,但这些回调不会更新参数?! 例如:在创建片段时,我将URI与包一起传递给它。然后,另一个片段通过对第一个片段的changeUri(URI-URI)方法回调来更改这个URI。如果然后重新创建片段(例如由于屏幕旋转),它将使用