Database 数据库:初始化脚本与故障保护代码(也称始终更新与插入或更新)

Database 数据库:初始化脚本与故障保护代码(也称始终更新与插入或更新),database,Database,我在想。。。当使用一组固定的数据(例如:数据库表CITY\u NAME、CITY\u population中某些城市的人口)时,哪一种是最佳做法 使用初始化脚本用所有可能的记录填充表,并编写代码仅更新给定城市的公民数量 使用“智能”代码,该代码可以处理为先前未知城市创建的新记录,并更新现有记录 在第一种情况下,如果之前没有运行脚本,代码将失败,在第二种情况下,代码肯定会稍微复杂一点(所有查询“show all records”将只列出具有udated数据的城市,而在第一种情况下,它们至少会在“p

我在想。。。当使用一组固定的数据(例如:数据库表CITY\u NAME、CITY\u population中某些城市的人口)时,哪一种是最佳做法

  • 使用初始化脚本用所有可能的记录填充表,并编写代码仅更新给定城市的公民数量
  • 使用“智能”代码,该代码可以处理为先前未知城市创建的新记录,并更新现有记录
  • 在第一种情况下,如果之前没有运行脚本,代码将失败,在第二种情况下,代码肯定会稍微复杂一点(所有查询“show all records”将只列出具有udated数据的城市,而在第一种情况下,它们至少会在“population”字段中提供一个令人担忧的零的城市名称)


    你会选择一个便宜但晦涩难懂的初始化过程,还是选择更复杂但健壮的代码?

    如果你的数据库有,我会使用upsert(在SQL Server 2008中称为merge,不确定其他dbs会称之为merge)语句,如果没有,我会通过更新具有匹配记录的记录并插入不匹配的记录来实现


    我不会使用我知道在可预测的情况下会失败的代码。在这种情况下,代码并不复杂。我可以在不到十分钟的时间内写出整件事。

    好吧,在这个例子中,确实需要十分钟,但实际上我使用的是一个相当复杂的系统;不管怎么说,你的建议是合理和有说服力的。